目录
一、定义常量
const 定义常量,不可更改。可以一次性定义多个常量,但必须都要赋值。
二、基础数据类型
1. 整型 int
2. 浮点 型 float
3. 布尔 型 bool
4. 字符串 string
三、字符串常用操作
1. 转义字符
2. 长度、拼接、判断等
一、定义常量
const 定义常量,不可更改。可以一次性定义多个常量,但必须都要赋值。
package main
import "fmt"
func main() {
const username = "张三"
fmt.Println(username)
// 定义多个常量
const (
username = "张三"
age = 12
sex = "男"
)
fmt.Println(username, age, sex)
// 多个常量第一个赋值后面的值跟第一个一致
const (
a = 1
b
c
)
fmt.Println(a, b, c) // 1 1 1
const (
a = 1
b
c = 2
)
fmt.Println(a, b, c) // 1 1 2
// 定义常量iota函数,默认从0开始一直累加
const (
a = iota
b
c
)
fmt.Println(a, b, c) // 0 1 2
const (
a = iota
b
c = 100
)
fmt.Println(a, b, c) // 0 1 100
const(
a = iota
_
c
)
fmt.Println(a, c) // 0 2
}
二、基础数据类型
1. 整型 int
int、uint 根据自身电脑系统决定是 int32、uint32 还是 int64、uint64
int8、uint8
int16、uint16
int32、uint32
int64、uint64
上述所有不在细讲,实际工作中如果用不到字符字节运算,上述类型做个了解即可。另外获取整形所占字节量,使用unsafe。
package main
import "fmt"
func main() {
const a int = 1
fmt.Println(unsafe.Sizeof(a)) // 1
}
2. 浮点型 float
浮点型 也就是小数点类型,但是所有开发语言的浮点型精确度都有问题,需要单独运算。因为二进制转十进制的时候精度都会有问题。
package main
import "fmt"
func main() {
const (
a float32 = 8.2
b float32 = 3.8
)
fmt.Println(a - b) // 4.3999996
}
3. 布尔型 bool
true\false
package main
import "fmt"
func main() {
a := true
fmt.Printf("%v -- %T", a, a) // true -- bool 这里的%v是获取a的值,%T是获取a的类型
}
4.字符串string
package main
import "fmt"
func main() {
a := "hello golang"
fmt.Printf("%v -- %T", a, a) // hello golang -- string
}
三、字符串常用操作
1. 转义字符
转义字符各语言都差不多,但是要在 双引号 内使用。
注:多行字符串输出方式
package main
import "fmt"
func main() {
var str = `this is str
this is str
this is str
this is str
`
fmt.Println(str)
}
2. 长度、拼接、判断等
len : 一个汉字占3个字节,一个英文占用一个。
package main
import "fmt"
func main() {
var a = "你好"
fmt.Println(len(a)) // 6
}
+ \ fmt.Sprintf()
package main
import "fmt"
func main() {
str1 := "你好"
str2 := "golang"
fmt.Println(str1 + str2) // 你好golang
str1 := "This is" +
" golang " +
"not php"
fmt.Println(str1) // This is golang not php
str1 := "你好"
str2 := "golang"
str3 := fmt.Sprintf("%v %v", str1, str2)
fmt.Println(str3) // 你好 go lang
}
strings.Split \ strings.Join
package main
import (
"fmt"
"strings"
)
func main() {
str1 := "123-456-789"
str2 := strings.Split(str1, "-")
fmt.Println(str2) // 得到切片[123 456 789] 也就是数组
str3 := strings.Join(str2, "*")
fmt.Println(str3) // 123*456*789
}
strings.Contains \ strings.HasPrefix \ strings.HasSuffix \ strings.Index \ strings.LastIndex
package main
import (
"fmt"
"strings"
)
func main() {
str1 := "This is str"
str2 := "is"
str3 := "xxx"
str4 := "This"
fmt.Println(strings.Contains(str1, str2)) // true
fmt.Println(strings.Contains(str1, str3)) // false
fmt.Println(strings.HasPrefix(str1, str4)) // true
fmt.Println(strings.HasSuffix(str1, str4)) // false
// 都是从前往后数,从0开始
fmt.Println(strings.Index(str1, str2)) // 2
fmt.Println(strings.LastIndex(str1, str2)) // 5
}