Go学习日记
Go的数据类型
bool: true 和 false
int: int8, int16, int32(int), int64
uint: uint8, uint16, uint32(uint), uint64
float: float32, float64
byte 字节类型, 本质是uint8, 对应的操作包是bytes
Golang的数值类型明确的制定了长度、有无符号
Golang不会做类型转换, 类型不同无法编译通过, 所以string只能和string拼接, strings包用来解决string的问题.
Go语言里的字符串长度
用len(str)函数获取到的长度, 这个是字节长度, 就是字符串占了多少个字节(byte). 用utf8库的RuneCountInString(str)函数来计算字符个数.
package main
import "unicode/utf8"
func main() {
//输出9
println(len("字符串"))
//输出3
println(utf8.RuneCountInString("字符串"))
//输出5
println(utf8.RuneCountInString("go字符串"))
}
从以上例子可以看出, 在Go里, 要计算字符串的字节长度, 用len()函数即可; 如果要计算字符个数, 要用编码库的函数来计算.
Go语言里的字符串拼接
和其他的一些语言一样, Go字符串拼接也是用"+", 但不支持字符串和其他类型直接拼接, 需要先转成字符串.
package main
import "strconv"
func main() {
a := "a"
b := 1
//不可以这样
//println(a + b)
//需要先转成字符串
println(a + strconv.Itoa(b)) //输出a1
}
一个奇怪的类型rune
package main
import "fmt"
func main() {
var a = rune('a')
//输出97
fmt.Printf("str: %v\n", a)
var str = []rune{'我', '是', 'r', 'u', 'n', 'e'}
//输出[25105 26159 114 117 110 101]
fmt.Printf("str: %v\n", str)
}
Go没有char类型, 直观上看rune就是字符, 就是Go的char类型. 但是, rune不是byte, 源码里rune=int32, 一个rune有四个字节, 这是Go的特色, 可以用来存世上所有的语言字符.
Go变量声明var
Go支持类型推断
//var a int = 1 可以简写如下
var a = 1
//局部变量(方法函数内部)还可以这样写, 省略var
a := 1
变量名一般用驼峰命名法
Go没有public, private等修饰符
//变量或函数名首字母大写,全局可以访问
//全局可访问变量
var Global = "全局变量"
//全局可访问函数
func GlobalFun() {
//.....
}
//首字母小写,只能在包里使用,它的子包也不能使用
var local = "包变量"
var (
FirstName string = "陈"
LastName = "Bug"
Age = 43
)
Go常量声明 const
常量无法修改值
package main
const hello = "world"
func main() {
// hello = "hello world" 如再次修改值将报错,常量不可以改变值
println(hello)
}
Go的函数方法声明func
语法 func 方法名(首字母是否大写决定了作用域) ([返回值类型列表])
方法可以返回多个不同类型的值, 这是一个很大的不同点
方法调用时,如需要忽略返回值可以用 _ = 方法名(...),和一些其他的语言一样,_代表舍弃
package main
func main() {
}
//方法名PrintLine, 有一个content的字符串参数, 并返回一个int数值和一个string字符串
func PrintLine(content string) (int, string) {
Println(content)
return 0, "done"
}
标签:string,笔记,var,学习,字符串,func,Go,main
From: https://www.cnblogs.com/codingpeng/p/18058115