Go语言基础
数据类型
package main
import (
"fmt"
)
func main(){
var n=100
//查看类型 v 时万能的
fmt.Printf("%T\n",n)//打印类型 T
fmt.Printf("%v\n",n)//通用打印值 v默认格式
fmt.Printf("%b\n",n)//2进制
fmt.Printf("%d\n",n)//10进制
fmt.Printf("%o\n",n)//8进制
fmt.Printf("%x\n",n)//16进制
var s="hello 恒哥哥"
fmt.Printf("%s\n",s)//打印字符串 s
fmt.Printf("%v\n",s)//通用打印值 v默认格式
}
注意
//go语言内部实现编码UTF-8,字符串必须是""(双引号),字符必须是’’(单引号). //字节:1字节=8Bit(8个二进制位)
//一个字符‘A’=1个字节 //1个utf8编码汉子“杀”=一般3个字节
字符操作
package main
import (
"fmt"
"strings"
)
func main(){
s := "i'm ok\n"//自动定义s类型
fmt.Printf(s)
//多行的字符串 原样输出
s2 :=`是轻薄
人情恶
\\\\
鱼松黄昏恋
`
fmt.Printf(s2)
//----------------------------------------------------------------------
//字符串拼接
name :="理想"
world :="dsb"
ss :=name+world
fmt.Printf(ss)
ss1 :=fmt.Sprintf("%s%s\n",name,world)//拼接不打印,可赋值
fmt.Println(ss1)
s2 :="asfdiiasfdaiiafdii"
//字符切割
ret :=strings.Split(s2, "ii")
fmt.Println(ret)
//字符包含
fmt.Println(strings.Contains(s2,"理想"))
fmt.Println(strings.Contains(s2,"asf"))
//前缀后缀判断
fmt.Println(strings.HasPrefix(s2,"asf"))//前缀判断
fmt.Println(strings.HasPrefix(s2,"dii"))
fmt.Println(strings.HasSuffix(s2,"dii"))//后缀判断
//判断子串出现的位置
s3 :="fda"
fmt.Println(strings.Index(s2,s3))
//拼接
fmt.Println(strings.Join(ret,s3))
//ret中被切割的空格处放入s3
}
判断使用
package main
import (
"fmt"
// "strings"
)
func main(){
if age :=18;age > 18{//age是局部变量(作用域在if中)
fmt.Println("你成年了")
}else if age < 18{
fmt.Println("你未成年")
}else{
fmt.Println("你18了")
}
}
for循环
// go中只有for循环,没有其他的循环
package main
import (
"fmt"
// "strings"
)
func main(){
//基本格式
/*
for i :=0;i<10;i++{
fmt.Println(i)
}
*/
//变种1
/*
var i =5
for ;i<10;i++{
fmt.Println(i)
}
*/
//变种2
/*
for i :=0;i<10;{
fmt.Println(i)
i++
}
*/
//-------------------------------
//for range循环
s := "hello恒哥哥"
for i,v := range s {
fmt.Printf("%d %c\n",i,v)
}
}
语句控制
Break,Continue,Switch语句控制
go中只有for循环,没有其他的循环
swith–》简化大量判断
一个变量哈一个具体的值作比较
package main
import (
"fmt"
// "strings"
)
func main(){
//当i=5跳出for循环
/*
if i==5{
break
}
fmt.Println(i)
}
fmt.Println("over")
//当i=5继续下一次循环
for i:=0;i<10;i++{
if i==5{
continue
}
fmt.Println(i)
}
fmt.Println("over")
*/
var n int
n=3
switch n{
case 1:
fmt.Println("大拇指")
case 2:
fmt.Println("小拇指")
case 3,4,5:
fmt.Println("多个拇指")
default:
fmt.Println("按无效参数")
}
}
Goto和标签的使用
package main
import("fmt")
func main(){
var i int
for i=0;i<10;i++{
if i==5{
goto xx//直接可以跳出多层循环,break只能跳出当前循环,也可用bool的值控制
}
fmt.Printf("%d\n",i)
}
xx: //lable标签
fmt.Println("over")
}