1. Print Println和Printf
Demo01/main.go
package main
import "fmt"
func main(){
// fmt.Println("Hello, Golang")
// fmt.Print("no wrap")
// fmt.Printf("hello. printf")
//Print 和 Println的区别
// fmt.Print("A","B","C")//ABC
// fmt.Println("A","B","C");//A B C 多个变量输出时, Println会在变量之间加空格
//2. Println 和 Printf 区别
// var a = "aaa" //go语言中变量定义以后必须要使用
// fmt.Println(a);
// fmt.Printf("%v",a)
// var a int = 10
// var b int = 3
// var c int = 5
// fmt.Println("a=",a,"b=",b,"c=",c)
// fmt.Printf("a=%v b=%v c=%v",a,b,c)
//类型推导方式定义变量
a := 10
b := 20
c := 30
fmt.Printf("a=%v b=%v c=%v\n",a,b,c)
//使用Printf打印一个变量的类型
fmt.Printf("a=%v, Type of a is %T",a,a)
}
package main
import "fmt"
func getUserInfo()(string,int){
return "zhangsan",10
}
// var global = "全局变量"
// global1 := "全局变量 - 短变量声明法 错误写法" //non-declaration statement outside function body
func main(){
// global1 := "全局变量 - 短变量声明法 错误写法"//放在方法内则没有问题
// fmt.Println(global)
// fmt.Println(global1)
// fmt.Println("声明变量")
/*
1.var 声明变量
var 变量名称 类型
变量名称的命名: G哦语言变量名字由字母,数字,下划线组成,其中首个字符不能为数字。Go语言中关键字和保留字都不能用作变量名。
*/
// var username string
// fmt.Println(username)//变量声明后没有初始化的话 值为空
// var a1 = "zhangsan"
// fmt.Println(a1)
//go语言变量的定义以及初始化
//第一种初始化变量的方式
// var username string
// username = "ZHANGSAN"
// fmt.Println(username)
//第二种初始化变量的方式
// var username string = "lisi"
// fmt.Println(username)
//第三种初始化变量的方式
// var username = "wangwu"
// fmt.Println(username)
/*
//Go 语言中的变量需要声明后才能使用,同一作用域内不支持重复声明
var username = "Tom"
var age = "20"
var sex = "Male"
// var username = "Jerry"//变量名重复, 编译时会报错:username redeclared in this block
fmt.Println(username, age, sex)
*/
// var username = "Tom"
// var age = "20"
// var sex = "Male"
// username = "Jerry"//赋值
// fmt.Println(username, age, sex)
/*
2.一次声明多个变量
var 变量名称, 变量名称 类型
var (
变量名称 类型
变量名称 类型
)
*/
// var a1, a2 string
// a1 = "aaa"
// a2 = "bbbbbbb"
// fmt.Println(a1,a2)
/*
var a1, a2 string
a1 = "aaaa"
a2 = 123 //cannot use 123 (type untyped int) as type string in assignment。 错误写法, go语言中定义的类型时string类型,赋值的时候必须赋值string类型的数据
fmt.Println(a1, a2)
*/
/*
var (
username string
age int
sex string
)
username = "zhangsan"
age = 20
sex = "男"
fmt.Println(username, age, sex)
*/
/*
var (
username string = "zhangsan"
age int = 20
sex = "男"//新版本的Golang可以通过类型推导来确定变量的类型,所以类型声明可以省略
)
fmt.Println(username, age, sex)
*/
/*
3. 短变量声明法 在函数内部, 可以使用更简略的 := 方式声明并初始化变量。
注意:短变量只能用于声明局部变量, 不能用于全局变量的声明
*/
/*
// var username = "zhangsan"
username := "zhangsan"
fmt.Println(username)
fmt.Printf("Type of username: %T",username)
*/
/*
//使用短变量一次声明多个变量,并初始化变量
// a, b, c := 12, 13, 20
a, b, c := 12, 13, "C"
fmt.Println("a=",a,"b=",b,"c=",c)
fmt.Printf("Type of a: %T, Type of b: %T, Type of c: %T",a,b,c)
*/
/*
匿名变量 在使用多重赋值时,如果想要忽略某个值,可以使用给匿名变量(anonymous variable)
匿名变量用一个下划线_ 表示, 例如
func getUserInfo()(string,int){
return "zhangsan",10
}
*/
// var username, age = getUserInfo()
// fmt.Println(username, age)//zhangsan 10
// var username = getUserInfo()//如果只需要username,不需要age,直接省略age,会报错:assignment mismatch: 1 variable but getUserInfo returns 2 values
// fmt.Println(username)
var username, _ = getUserInfo()
fmt.Println(username)//zhangsan
//匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明
var _,age = getUserInfo()
fmt.Println(age)
}
package main
import "fmt"
func main() {
/*
var username = "zhangsan"
username = "lisi"
username = "wangwu"
fmt.Println(username)
*/
//常量
// const pi = 3.1415926
// fmt.Println(pi)
// const pi String//错误写法
// pi = "xxxx"//错误写法
// fmt.Println(pi)
/*
常量在定义时必须赋值, 如果常量像变量一样先定义再赋值,编译时会报如下错误
.\main.go:19:11: const declaration cannot have type without expression
.\main.go:19:11: missing value in const declaration
.\main.go:20:2: undefined: pi
.\main.go:21:14: undefined: pi
*/
/*
const A = "A"
A = "AAA"//错误的写法
fmt.Println(A)//常量的值不可改变,如果定义赋值之后,再次赋值给某一常量,编译时会报错: cannot assign to A
*/
/*
//多个常量也可以一起声明
const(
A = "A"
B = "B"
)
fmt.Println(A,B)
*/
/*
//const 同时声明多个常量时,如果省略了值则表示和上面一行的值相同
const(
n1 = 100
n2
n3
n4
)
fmt.Println(n1,n2,n3,n4)
*/
//iota是Golang语言的常量计数器,只能在常量的表达式中使用
// fmt.Println(iota)//编译错误:undefined: iota
//iota在const关键字出现时将被重置为0(const内部的第一行之前),const中每新增一行常量 声明将使iota计数一次(iota可理解为const语句块中的的行索引)
// const a=iota
// fmt.Println(a)//a=0
// const (
// n1 = iota
// n2
// n3
// n4
// )
// fmt.Println(n1,n2,n3,n4) //0 1 2 3
// const (
// n1 = iota
// _
// n3
// n4
// )
// fmt.Println(n1,n3,n4) //0 2 3
//iota声明中间插队
// const (
// n1 = iota //0
// n2 = 100 //100
// n3 = iota //2
// n4 //3
// )
// fmt.Println(n1,n2,n3,n4)
//多个iota可以定义在一行
// const (
// n1,n2 = iota + 1, iota + 2 //1,2
// n3,n4 //2,3
// n5,n6 //3,4
// )
// fmt.Println(n1,n2)
// fmt.Println(n3,n4)
// fmt.Println(n5,n6)
//定义变量
// n1, n2 := 20, 30
// fmt.Println(n1,n2)
//命名规范
//Go语言中变量的名字是区分大小写的,但是在实际运用中,不建议用同一个单词的大小写来区分两个变量
// var age =20
// var Age = 30
// fmt.Println(age,Age)
//命名建议采用驼峰命名规则, 特殊名词根据是否私有全大写或全小写(一般大写表共有,小写表私有)
// var maxAge = 20//小驼峰
// var MaxAge = 20//大驼峰
// var DNS = "127.0.0.1"//特殊名词
//go fmt 命令可以格式化代码
}
原文:https://www.cnblogs.com/hanajiang/p/13757642.html