一、go语言初探 1. 基本数据类型 整型(int)、浮点型(float)、布尔型(bool)、字符串(string) 2. 复合数据类型 数组、切片、结构体、函数、map、通道(channel)、接口等 3. 安装Bee go install github.com/beego/bee/v2@master 4. 命令: go version #查看go的安装版本 go env #查看go运行环境 go run main.go #运行go脚本 go build main.go #生成main.exe main.exe #执行生成的文件 go fmt main.go #格式化代码 一般不用了, 编辑器可以格式化 go get github.com/shopspring/decimal 下载go插件 二、语法: 1. fmt.Print #可以接收多个参数 2. fmt.Println #可以接收多个参数 3. fmt.Printf #格式化输出 类似c语言 %v 相应默认格式输出 %T 输出数据类型 int .... 4. fmt.Sprintf # 格式化输出到变量 4.定义变量 定义变量后必须使用否则会报错 建议用驼峰方式定义 小驼峰表示私有/大驼峰表示公有 var a = 'aaa' var a int = 10 a := 10 #类型推导方式定义变量 短变量声明法 不能声明全局变量 #变量初始化的方式 同一作用域变量不能重复声明 var name string name = "张三" #先定义再赋值的方式 必须用双引号 或 var name string = "张三" #直接赋值方式 或 var name = "张三" #类型推导方式 name := "张三" 短变量声明法 #定义多个变量 var a1, a2 string #同类型变量 a1 = "张三" a2 = "李四" 或 var ( #也可以使用类型推导方式 username string age int sex string ) username = "张三" age = 18 sex = "男" 或 a, b, c := 12, 13, "C" # 短变量声明多个变量 #匿名变量 _ var username string #变量不设置值 默认值为空 var num int #变量不设置值 默认值为0 5. 常量 const pi = 3.14195 #定义常量必须赋值 # 一次定义多个常量 const ( A = "A" B = "B" ) const ( # 如果后面的常量不赋值, 则值等于前面的常量值 且 常量定义后不使用也不会报错 name = "abc" name2 ) const ( # iota 常量自动累加 类似计数器 a = iota # 0 b # 1 c # 2 ) const ( # iota 常量自动累加 类似计数器 a = iota # 0 _ # 跳过某个值 c # 2 ) const ( # iota 常量自动累加 类似计数器 a = iota # 0 b = 100 # 100 c # 2 d # 3 ) const ( # 矩阵? a, b = iota + 1, iota + 2 #1 2 c, d # 2 3 e, f # 3 4 ) 6. 数据类型 int类型 unsafe.Sizeof(a) 变量占用的存储空间(占用空间的位数) int类型尽量用具体的类型不要直接使用int, 因为int占用8字节会浪费内存空间 有符号整型: int8 int16 int32 int64(默认) 无符号整型: uint8 uint16 uint32 uint64 不同位数不能进行加减运算, 运算前需进行类型转换如int64(a) 注意高位转低位溢出问题 char字符: 属于int类型 值为字符对应的ascii码 用单引号设置值 fmt.Printf("%c",'a') 原样输出 float浮点型 float32 float64(默认) 科学计数法: var a = 3.14e2 #314 bool布尔型 默认值是false, bool无法转换成整型, 不能参与运算 string字符串 要用双引号 字符用单引号 str1 := `agsd` #原样字符串/多行字符串使用反引号, 类似js的模板字符串 len(str) # 计算字符串占用存储空间, 一个中文占三个字节 + # 拼接字符串 strings.Split(str,"-") # 字符串分割成切片 strings.Join(str,"-") # 切片连接成字符串 strings.Contains(str1, "123") # 字符串是否包含另一个字符串 true/false strings.HasPrefix(str1, "123")/strings.HasSuffix(str1, "123") # 前辍/后辍是否包含某个字符串 true/false strings.Index(str1, "456") # 查找字符串第一次出现的位置(从前往后找) 找不到返回-1 strings.LastIndex(str1, "456") # 查找字符串第一次出现的位置( )从后往前找) 找不到返回-1 #循环输出字符串 s := "你好 golang" for _, v := range s { fmt.Printf("%v(%c)", v, v) } #修改字符串 s1 := "big" byteStr := []byte(s1) //转换成byte byteStr[0] = 'p' //修改字符串 fmt.Println(string(byteStr)) //转回string pig s1 := "你好" byteStr := []rune(s1) //转换成rune byteStr[0] = '大' //修改字符串 fmt.Println(string(byteStr)) //转回string 大好 7. 基本数据类型转换: int8()、int16()、float32()、float64() str := fmt.Sprintf("%d",num) #可以使用Sprintf 把任意类型转换成字符串类型 strconv.FormatInt(int64(a),10) # int转字符串 strconv.FormatFloat(float64(a),'f',2,64) #浮点转字符串 strconv.ParseInt # 字符串转int # 字符串转int str := "abc" num, err := strconv.ParseInt(str, 10, 64) # 字符串转float strconv.ParseFloat # 不建议把strng 转 bool 8. 运算符 # int 相除 只保留整数部分 # ++ -- 无前置运算符 9. 流程控制语句 if: 条件不加括号, 大括号不能省略且不能换行 # 没有while语句 for: 条件不加括号 # for rang 循环字符串 str := "你好 golang" for _, v := range str { fmt.Printf("%c", v) } #for rang 循环切片 也可以用len计数循环 arr := []string{"php", "java", "golang"} for k, v := range arr { fmt.Println(k, v) } switch case # case 1,2,3,5 可以这样写 可以不写break fallthrough 穿透一层
标签:语言,int,fmt,var,语法,字符串,go,string From: https://www.cnblogs.com/longfeiPHP/p/17350283.html