var x1, y1 int var ( // 这种因式分解关键字的写法一般用于声明全局变量 a1 int b1 bool )
var c1, d1 int = 1, 2 var e1, f1 = 123, "hello"
var h1 int // 全局变量 允许声明但不使用 // e1 := "weilai" // 只能被用在函数体内,而不可以用于全局变量的声明与赋值
func main() { /* 多行注释 */ // 一行注释 var a string = "weilai" // 声明一个变量并初始化 var b, c int = 1, 2 // 一次声明多个变量: var d int // 声明变量,不初始化,一般情况下,值类型默认为 0, 布尔类型默认值为 false ,string 默认值为空字符串 '' var z bool // bool 0值 false fmt.Println(z) fmt.Println(a) // 打印 a 换行 fmt.Print(b, c) // 不会换行 fmt.Println(d) fmt.Println("hello") // 会换行 fmt.Println("world" ) fmt.Print("hello") fmt.Print("world")
// var e int 这行存在 下行就会报错就会报错 no new variables on left side of := e := "weilai" // 等同于 var e string = "weilai" // 使用操作符 := 可以高效地创建一个新的变量,称之为初始化声明 f, g := 20, 30 f, g = g, f // 如果你想要交换两个变量的值,,两个变量的类型必须是相同。 // h := 40 // 声明但未使用 局部变量 会报错 fmt.Println("e=", e , ",f=" , f , ",g=" , g) fmt.Printf("e=%s,f=%d,g=%d" , e , f , g) // Printf 是格式化输出 var vname1, vname2, vname3 = "v1", "v2", "v3" fmt.Printf(vname1, vname2, vname3) println(x1, y1, a1, b1, c1, d1, e1, f1)
_,numb,strs := numbers() //只获取函数返回值的后两个 fmt.Println(numb,strs) } //一个可以返回多个值的函数 func numbers()(int,int,string){ a , b , c := 1 , 2 , "str" return a,b,c }