手机移动网站模板,建一个类似淘宝的网站需要多少钱,酒店预订网站开发,苏州网站设计公司有哪些基础语法
与python、vue等类似#xff0c;go语言也分常量和变量等#xff0c;常量用const(不可变)和变量var(可变)定义 常量
常量中的数据类型只可以是布尔型、数字型#xff08;整数型、浮点型和复数#xff09;和字符串型#xff0c;值不可更改#xff0c;表达式只支…基础语法
与python、vue等类似go语言也分常量和变量等常量用const(不可变)和变量var(可变)定义 常量
常量中的数据类型只可以是布尔型、数字型整数型、浮点型和复数和字符串型值不可更改表达式只支持内置函数
const num int 10
const str Hello world //支持按值进行类型推导
const LENGTH len(str) //表达式只支持内置函数
//定义枚举值
const (Unknown 0Female 1Male 2
)
变量
func main() {var a 100 // 支持类型推导var b int 200 // 声明类型并初始化var (x,y,z string //只声明)var a int a 150c : 300 //短变量声明并初始化只能在函数体内使用x hello world //全局变量赋值
} 函数体内的变量一旦声明就一定要使用不然会报编译出错变量读取优先读取函数体内的没找到再读取函数体外的 _特殊只写变量例如 值 5 在_, b 5, 7 中被抛弃常用于不需要从一个函数得到所有返回值 基础数据类型
go不支持隐式类型转换需显示转换要转换的类型(变量)
整型 有符号按长度分为int8、int16、int32、int64 对应的无符号整型uint8、uint16、uint32、uint64默认值为0
var x int8 8
var y int32 55
y int32(x) //低位转高位
fmt.Println(x, y) //输出8,8
var a int8 9
var b int32 99
a int8(b) //高位转低位 转成二进制截取
fmt.Println(a,b) //输出99 特殊整型 int/uint 32位操作系统上就是int32/uint3264位操作系统上就是int64/uint64 uintptr 无符号整型用于存放一个指针 byte 实际是一个uint8代表了ASCII码的一个字符 rune 实际是一个int32代表一个UTF-8字符 布尔型 true和false默认值为false无法参与数值运算不允许将整型强制转换为布尔型 浮点型 支持两种浮点型数float32和float64默认类型是float64 复数 complex64和complex128 字符串
go语言字符串是一个任意字节的常量序列底层是byte字节数组,len()方法计算的是字节总数修改字符串必须先转成byte或者rune多行字符串可以使用反引号
func main(){var str Go入门教程!fmt.Println(str[0:],str[0:5]) //按索引截取字符串fmt.Println(len(str)) //输出15, 一个中文三个字节fmt.Println(utf8.RuneCountInString(str))//输出7代表7个字符var charArray []rune(str) //转成字节切片fmt.Println(len(charArray))//range 遍历所有字符for _,s: range str {fmt.Printf(%v\t,string(s))}//字符串比较var str1 Go入门教程 !fmt.Println(strstr1) str welcome //字符串连接fmt.Println(str)
}
常用工具包strings
strings.ToUpper(str),strings.ToLower(str
strings.Join([]string{java, go, c},;)
strings.ContainsAny(str, GW)
strings.Contains(str,Go)
strings.Split(str,)
strings.EqualFold(str,str1) //不区分大小比较
strings.Compare(str1,str) //区分大小写比较
字符串连接采用strings.Builder或者 bytes.Buffer推荐strings.Builder 性能最高
func StringAppend(num int) {var now time.Now()var str for i : 0; i num; i {str append strconv.Itoa(i)}fmt.Println(time.Since(now))fmt.Println(len(str))now time.Now()var stringBuilder strings.Builder{}for i : 0; i num; i {stringBuilder.WriteString(append strconv.Itoa(i))}fmt.Println(time.Since(now))fmt.Println(len(stringBuilder.String()))now time.Now()var bytebuffer bytes.Bufferfor i : 0; i num; i {bytebuffer.WriteString(append strconv.Itoa(i))}fmt.Println(time.Since(now))fmt.Println(len(bytebuffer.String()))
}
类型转换
基础数据类型转string采用strconv包 或者fmt.Sprintf()
var x int 99
var y float32 88.88
fmt.Sprintf(%d,%.2f,x,y)
string转基础数据类型利用strconv包
var x 99;
var y 88.88运算符
不支持三元运算符支持赋值交换比如a,bb,a
控制语句
支持 ifforcase表达式不需要()支持goto 语言但不推荐使用
func main() {if x,y:5,3; xy 10 { //判断表达式前支持一个赋值表达式分号分隔fmt.Printf(%d %d 10,x, y)}else if xy 10{fmt.Printf(%d %d 10,x, y)}else{fmt.Printf(%d %d 10,x, y)}
}
// 冒泡算法
func BubbleSort(array []int){length : len(array)for i: 0; i length-1; i {for j : 0; j length-i-1; j{if array[j] array[j1]{array[j], array[j1] array[j1],array[j]}}}
}
// 等同于while
for i 100{
}
//死循环
for{
} 表达式不需要 { 不能单独放在一行, 编译报错 代码行之间不需要分号也不能用分号