go语言之变量详解编程语言

1、go的hello world

package main 
//申明开头,表示代码所属包,申明为main包,可以编译为二进制程序 
import ( 
   "fmt" 
) 
//导入格式化包,如果引入了包,则必须要用,不然会报错,主要为提高效率,追求极致 
 
func main() { 
   fmt.Println("Hello, World!") 
} 
//左边的大括号不能自己单独启一行,右边的大括号不影响 
 
 
//单行注释 
/* 
duo多行zhus注释 
 */ 
 
 
 //go区分大小写 
 //go的变量名以下划线和字母开头 

  

2、go的变量申明

package main 
 
import "fmt" 
func main() { 
 
	//申明变量 
	var v1 int 
	var v2 int 
 
	var v3,v4 int 
 
	var ( 
		v5 int 
		v6 int 
	) 
 
	//默认都是零值 
	fmt.Println(v1,v2,v3,v4,v5,v6) 
} 

  

3、go变量的初始化

package main 
 
import ( 
	"fmt" 
	"reflect" 
) 
func main() { 
	//初始化变量 
 
	//方式1 
	var v1 int = 10 
 
	//方式2 
	var v2 = 20 
 
	//方式3 
	v3 := 30 
 
	fmt.Println(v1,v2,v3) 
	fmt.Println("v3的类型为",reflect.TypeOf(v3)) 
	//利用反射查看v3的类型 
} 

  

package main 
 
import "fmt" 
func main() { 
	//直接赋值 
	var v1 int 
	v1 = 10 
 
	//申明并赋值,这种方式只能在函数里用 
	v2 := 20 
	v3 := 30 
 
	//多重赋值 
	var v4,v5,v6 int 
	v4,v5,v6 = 40,50,50 
 
	fmt.Println(v1,v2,v3,v4,v5,v6) 
 
} 

  

4、go变量的赋值

package main 
 
import "fmt" 
func main() { 
	//直接赋值 
	var v1 int 
	v1 = 10 
 
	//申明并赋值 
	v2 := 20 
	v3 := 30 
 
	//多重赋值 
	var v4,v5,v6 int 
	v4,v5,v6 = 40,50,50 
 
	fmt.Println(v1,v2,v3,v4,v5,v6) 
 
} 

  

5、匿名变量

package main 
 
import "fmt" 
 
//(int,string),函数的返回值是2个,一个是int一个是字符串 
func test() (int,string) { 
	return 444,"golang" 
} 
 
func main() { 
	//i, s := test() 
	//fmt.Println(i,s) 
 
	//test函数返回两个,在golang中,如果变量没有被使用,则会飘红,这里如果我们只用第二个变量,则可以用一个下划线来做匿名变量 
	//主要用来占位,这样,这个变量就算没有被使用,代码也不会飘红 
	_, s := test() 
	fmt.Println(s) 
} 

  

6、常量和枚举

package main 
 
import "fmt" 
 
//定义常量,必须要给一个确定的值,可确定的值比如 数字,字符串,布尔值 
const filename  = "chy.text" 
 
//这样就会报错,因为a是一个变量,不是一个确定的值 
//var a string 
//a = "abc" 
//const testname  = a 
 
func a()  { 
	const ( 
		v1 = "aaa" 
		v2 = "bbb" 
		filename  = "chr.text" 
	) 
 
	//就近原则 
	fmt.Println(filename) 
} 
func b()  { 
 
	//定义普通的枚举类型 
	const ( 
		python = "aaa" 
		java = "bbb" 
		perl = "ccc" 
	) 
	fmt.Println(python,java,perl) 
} 
 
func c()  { 
	//定义自增的枚举类型 
	//iota代表自增,从0开始,也叫做常量生成器 
	const ( 
		test1 = iota 
		test2 
		test3 
	) 
	fmt.Println(test1,test2,test3) 
} 
 
func d()  { 
	//iota还可以参与计算,下面的例子是位运算 
	const ( 
 
		b = 1 << (10*iota) 
		//1 * 2 ^ (10 * iota) 
		 
		kb 
		mk 
		gb 
		//tb 
		//pb 
	) 
	fmt.Println(b,kb,mk,gb) 
} 
 
func main() { 
	//a() 
	//b() 
	//c() 
	d() 
} 

  

复习代码

package main 
 
import "fmt" 
 
 
//定义一个函数,接受2个参数,参数1位int类型的a,参数为string类型的b 
//函数返回两个值,其中第一个值为int类型,第二个值为string类型 
func test1_1(a int,b string) (int,string) { 
	return a + 100,b + "abc" 
} 
 
func test1_2()  { 
	const ( 
		a = iota 
		b = iota 
		c = iota 
		d = iota 
	) 
 
	//下面这种写法和上面的写法的结果是一样的 
	//const ( 
	//	a = iota 
	//	b 
	//	c 
	//	d 
	//) 
	 
	fmt.Println(a,b,c,d) 
	//0 1 2 3 
} 
 
 
 
func test1_3()  { 
	const ( 
		a = iota    //此时iota为0,也就是a=0 
		b = 100     //此时iota为1,但是b=100 
		c = 200     //此时iota为2,但是c=200 
		d           //此时iota为3,但是d=200,和上一行的值保持一致 
		e           //此时iota为4,但是e=200,和上一行的值保持一致 
		f = iota    //此时iota为5,f=5 
	) 
	fmt.Println(a,b,c,d,e,f) 
	//0 100 200 200 200 5 
} 
 
 
func main(){ 
	//1、申明一个int类型的变量 
	var test_1_a int 
	var test_1_b int 
	var test_1_c,test_1_d int 
	var ( 
		test_1_e int 
		test_1_f int 
	) 
	fmt.Println(test_1_a,test_1_b,test_1_c,test_1_d,test_1_e,test_1_f) 
 
	//如果没有对int类型的变量赋值,那么这个int类型的变量为0 
	//0 0 0 0 0 0 
 
 
	//2、对变量进行赋值的三种方法 
	var test_1_1 int = 1 
 
	var test_1_2 = 2 
	test_1_3 := 3 
 
	fmt.Println(test_1_1,test_1_2,test_1_3) 
	//1 2 3 
 
 
	//此时这里的_就是匿名变量 
	_,res_a := test1_1(122,"dddd") 
	fmt.Println(res_a) 
	//ddddabc 
 
 
 
	c,d :=test1_1(1,"abc") 
	fmt.Println(c,d) 
	 
	//定义一个常量,这个常量不能被赋值为一个变量,因为变量是会变的,常量是不能变的 
	const filename  =  "test1.go" 
 
	test1_2() 
 
	test1_3() 
 
} 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/20938.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论