学习golang注意点:
- 导的包必须使用;或者使用
_
未使用的包,作用是调用该包下的初始化方法。- 局部变量声明必须使用。
- go语言的包和java的相似,
包名.变量
访问
1. 初识go语言
1.1 Hello World
package main
import "fmt"
func main() {
fmt.Println("hello world");
}
1.2 go 数据类型
布尔:
var a bool = true
var b bool = false
整型:
整型分为有符号和无符号的类型
8, 16 ,32 分别代表位数
int
: 根据系统决定是32位还64位
int8
: 1个字节,-128~127 相当于java中的short;
int16
: 2个字节,-215 ~ 215 -1
int32
: 4个字节 -231 ~231 - 1
int64
: 8个字节-263 ~263 - 1
uint : .....
无符号整形都是取值0~216 - 1
var a int = -3
var b uint = 3 //uint类型不可以为负数
浮点型:
var a float32 = 100.0
var b float64 = 100.00 //默认
字符类型
golang中的字符使用的是字节保存的,本质就是一个int32类型
var a byte = 'a'
var b byte = 'c'
fmt.Print(a, "===", b) //输出的是该字节对应的字节码: 97===99
fmt.Printf("%c === %c", a, b) // a === c
字符串型:
var str string = "hello world"
//多行字符串,不需要使用+来连接多行
var str2 string = `a
asda asdasdadsadasd `
复数类型:
complex64
是两个float32组成 complex128
两个float64组成
var a complex64 = 10 + 3i
var b complex128= 10 + 3i //默认
相关操作
var v= complex(2 , 3) //构造1个复数,
a := real(v) //返回复数实部 2
b := image(v) 返回复数虚部 3
rune类型:
// rune is an alias for int32 and is equivalent to int32 in all ways. It is
// used, by convention, to distinguish character values from integer values.
//int32的别名,几乎在所有方面等同于int32
//它用来区分字符值和整数值
type rune = int32
1.3 变量常量
局部变量:
属于函数或者方法;声明之后必须使用
var a = 3;
var b int = 3;
c := 3
全局变量
b := 10
这种全局变量声明是错误的
全局变量的概念:隶属于包
,声明之后可以不使用
var a int
var (
c int
d string
)
var e = 3
常量
局部
const a = 3
全局
const a int = 10
const b = 20
const (
d int = 10
e string = "ss"
f = 30
)
1.5 字符串相关操作
golang中string底层是通过byte数组实现的,byte使用utf-8编码标识的Unicode文本,每个汉字占3个字节
- 求长度
func strDemo() {
fmt.Println(len("hello")) //5
fmt.Println(len("中")) //3
fmt.Println(len([]rune("中"))) //1, 正确获取中文字符串长度
}
- 字符串遍历
//对中文无法支持
func strEach() {
str := "hello world"
for i := 0; i < len(str); i ++ {
//fmt.Print(str[i] ,"\t") // 104 101 108 108 111 32 119 111 114 108 100
//讲字节编码转为字符串输出
fmt.Printf("%c\t", str[i]) //h e l l o w o r l d
}
}
func strEach() {
str := "hello world 中国"
for i, s := range str {
//0 h1 e2 l3 l4 o5 6 w7 o8 r9 l10 d11 12 中15 国
fmt.Print(i, "\t", string(s))
}
}
//这个可以正确的输出索引
func strEachRune() {
str := "中国人民"
for i, s := range []rune(str) {
fmt.Println(i, string(s))
}
}
- 其他操作
str := "中国人民, hello world"
index := strings.Index(str, "国") //存在则 index > -1, 否则 == -1 此时index=-3
split := strings.Split(str, ",")
replace := strings.Replace(str, "o", "2", 1) //第三个参数标识替换几个,小于0,则替换所有
result := strings.EqualFold("中国", "中国2") //不区分大小写
fmt.Println("中国" == "中国H") //区分大小写, 同strings.Compare()5
1.6 相互转换
原文地址:https://www.cnblogs.com/hu1056043921/p/10312072.html
时间: 2024-10-12 18:14:38