go语言的学习day01

go语言的学习

typora
https://blog.youkuaiyun.com/qq_41648756/article/details/81057290
在这里插入图片描述

一、day01

linux 下执行
SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build

//切回window
SET GOOS=windows
go build

//编译后放到bin目录下
go install

1.变量声明:

package main
import "fmt"

var nWher = "test my "

//定义二个返回值
func foo()(string,int)  {
	return "alx",9000
}
func main()  {
	//声明必须要使用
	var name string
	var age int

	//批量声明 必须要使用
	var(
		a string
		b int
		c bool
		d string
	)
	a = "ab"
	b = 12
	c = false
	d = "cd";

	fmt.Print(name)
	fmt.Print(age)

	fmt.Print(a,b,c,d)


	//变量声明赋值
	var x string = "old boy"
	var y int = 12
	fmt.Printf("%s %d我爱你中国 \n",x,y)


	//类型推导
	var nCount = 600
	var z = true
	fmt.Printf("%d %d  love \n",nCount,z)


	fmt.Println("hello world !")


	//函数内 变量声明
	nazha := "嘿嘿嘿"
	fmt.Println(nazha)

	//_(匿名变量)用于接收不 需要的值
	aa,_ := foo()
	fmt.Println(aa)

	_,bb := foo()
	fmt.Println(bb)

	//不能重复 志明 同名变量
	var myname = "alex"
	//var myname = "alex"
	fmt.Println(myname)
}

2.常量声明:

//iota 总结:
//1. 遇到const 初始化为0
//2. const 每新增一次变量声明iota 就递增1
//3. const 声明中如果不写,默认就和上一行一样

package main

import (
	"fmt"
)

//常量的批量声明 c,d 等于1000
const (
	a = 1000
	b = 1000
	c
	d
)

//iota iota出现一次就自增计数1 ,const中每新增一行常量声明,将使iota 增加计数1 ,只能在常量里,在定义枚举时很有用
const (
	n1 = iota		//0
	n2 = iota		//1
	n3 = iota		//2
	n4 = iota		//3
)

const (
	aa = iota		//0
	bb 		//1
	cc 		//2
	dd  	//3
)

const (
	c1 = iota //0
	c2 = 100  //100  增加了一行,iota 会加1
	c3 = iota //2
	c4			//3
)
const  c5  = iota
//忽略某个值
const (
	mm = iota		//0
	nn 		//1
	_ 		//
	kk  	//3
)

const (
	_ = iota //0
	KB = 1 << (10 * iota) //向左移10位  2^10 = 1024
	MB = 1 << (10 * iota)//2^20 = 1024*1024
	GB = 1 << (10 * iota)//2^30
	TB = 1 << (10 * iota)//2^40
	PB = 1 << (10 * iota)//2^50

)


const (
	a0,b0 = iota+1,iota+2//没有新一次,iota = 0  a = 1,b = 2  //1  2
	c0,d0 //不写,和上面一样。c0,d0 = iota+1,iota+2     iota = 1, c0=1+1=2 d0 = 1+2 = 3 //2 3
	e0,f0 //iota = 2 iota+1 = 3,iota+2 = 4	//3 4
)
func main()  {

	//常量
	const pi = 3.14
	const e = 2.178

	//多个常量也可以
	const (
		pi2 = 3.13
		e2 = 2.128
	)

	fmt.Println(a,b,c,d)
	//fmt.Println(n1,n2,n3,n4)
	fmt.Println(aa,bb,cc,dd)

	fmt.Println(mm,nn,kk)
	fmt.Println(c1,c2,c3,c4,c5)

	fmt.Println(KB,MB,GB,TB,PB)

	fmt.Println(a0,b0,c0,d0,f0)
}

3.数据类型

//查看帮助文档
//方法1:cmd --> go doc strings
//方法2:
//1.cmd 先启一个服务:godoc -http=:9000
//2. 打开浏览器 http://127.0.0.1:9000/
//3. 点击 “Packages” 就可查看了
//方法3:golang 标准库文档: https://studygolang.com/pkgdoc

package main



//批量导入包
import (
	"fmt"
	"math"
	"strings"
)
//数据类型
//uint8 相当于byte
func main()  {
	//十进制
	var a int = 10
	fmt.Printf("%d \n",a) //10
	fmt.Printf("%b \n" ,a) //1010 占位符%b表示二进制

	// 八进制 以0开头
	var b int = 077
	fmt.Printf("%o \n",b ) //77

	//十六进制 以0x开头
	var c int = 0xff
	fmt.Printf("%x \n" ,c ) // ff
	fmt.Printf("%X \n" ,c ) // FF

	//变量的内存地址
	fmt.Printf("%p \n ",&a ) //%p 表示十六进制的内存地地

	//浮点型
	fmt.Println(math.MaxFloat64)
	fmt.Println(math.MaxFloat32)
	fmt.Println(math.Pi)
	fmt.Printf("%.2f \n",math.Pi)

	//bool GO语言不允许将整型强制转换成bool

	//字符串转义
	fmt.Println(" str:= \"c:\\Code\\lesson1\\go.exe\"  ")
	fmt.Println(" \"c:\\go.exe\"  ")

	var s1 = "单行文本"

	//注:多行文本,使用esc下方的 键, 原样输出
	var s2 = `这
	是 "这\里不用转义"
	多行
	文
	`

	fmt.Println(s1)

	fmt.Println(s2)

	//str 求长度
	ss := "alexdsb"
	fmt.Println(len(ss))

	//拼接字符串用 + 或 fmt.Spintf
	sk := "Python"
	fmt.Println(sk+"--"+ ss)

	scom := fmt.Sprint("%s---%s",ss,sk)
	fmt.Println(scom)

	//分割
	ret := strings.Split(ss,"x")
	fmt.Println(ret)

	//判断是否包含
	ret2 := strings.Contains(ss,"sb")
	fmt.Println(ret2)

	//判断 前辍
	ret3 := strings.HasPrefix(ss,"alex")
	ret4 := strings.HasSuffix(ss,"sb")
	fmt.Println(ret3,ret4)

	//求字串的位置,
	s4 := "applepen"
	fmt.Println(strings.Index(s4,"p"))//索引从0开始  // 1
	fmt.Println(strings.LastIndexAny(s4,"p"))//索引从0开始  //5

	//字符串合并
	a1 := [] string{"Python","PHP","JavaScript" ,"Ruby","Golang"}
	fmt.Println(strings.Join(a1,"~"))
}

4.字符的使用与修改

package main

import "fmt"

//char 字符使用单引号 ''
func main()  {
	s1 := "Golang"

	c1 := 'G'

	s2 := "中国"
	c2 :='中' //UTF-8编码下一个中文 占3个字节

	fmt.Println(s1,c1)

	fmt.Println(s2,c2)

	s3 := "hello沙河"
	fmt.Println(len(s3))

	//遍历字符串
	for i := 0 ; i <len(s3);i++{
		fmt.Printf("%c\n",s3[i])
	}

	fmt.Println()
	//for range 循环,是按照rune类型去遍历的
	for _,v := range s3{
		fmt.Printf("%c\n",v)
	}


	for k,v := range s3{
		fmt.Printf("%d - %c\n",k,v)
	}

	//修改字符串
	//[]rune []byte
	changeString()
}

func changeString()  {
	s1 := "big"
	//强制类型转换 s1 = string(byteS1)
	byteS1 := []byte(s1)
	byteS1[0] = 'p'
	s1 = string(byteS1)
	fmt.Println(s1)

	//string(runeS2) go语言中只有强制类型转换,没有隐式类型转换
	s2 := "白萝不"
	runeS2 := []rune(s2)
	runeS2[0] = '红'
	fmt.Println(string(runeS2))


}

语言的学习

一、day02

1.if for 流程语句:

package main

import "fmt"

func main()  {
	s1 := "Hello"

	//方法1
	byteArray := [] byte(s1)
	s2 := ""
	for i:= len(byteArray) -1 ;i >= 0;i--{
		//强制类型转换
		s2 = s2 + string(byteArray[i])
	}
	fmt.Println(s2)

	//方法2
	lenth := len(byteArray)//5

	for i :=0 ; i< lenth/2 ; i++  {

		//0 ,4 = 4, 0  互换
		byteArray[i],byteArray[lenth-1-i] = byteArray[lenth-1-i],byteArray[i]
	}
	fmt.Println(string(byteArray))

	//流程控制

	age := 19

	if age > 18 {
		fmt.Println("开业了")
	} else if age < 18 {
		fmt.Println("warning...")
	}else {
		fmt.Println("you are old")
	}

	age = 18
	if age == 18 {
		fmt.Println(age)
	}

	//方法2
	if age2:=28;age2>18{
		fmt.Println("成年了")
	}

	age3 := 18
	for age3 > 0 {
		age3--
	}
	switchDemo()
	//for{
	//	fmt.Println("无限循环")
	// break .goto ,return panic(报错) 语句强制退出循环
	//}
	//for range ?

	switchDemo3()

	goDemo()

	goBreak()
}

func switchDemo()  {
	finger := 3
	switch finger {
	case 1:
		fmt.Println("1")
	case 2,3:
		fmt.Println("2-----------")
	default:
		fmt.Println("defautl")
	}
}

func switchDemo2()  {
	age := 30

	//注:switch后没值
	switch {
	case age < 25 :
		fmt.Println("1")
	case age < 30 && age > 25:
		fmt.Println("2-----------")
	case age > 60:
		fmt.Println("> 1")
	default:
		fmt.Println("defautl")
	}
}

func switchDemo3()  {
	s := "a"

	//注:switch后没值
	switch {
	case s == "a" :
		fmt.Println("1")
		fallthrough //无条件的 运行 下面的case 语句
	case s=="b":
		fmt.Println("b")//这里 被强制 运行
	case s == "c":
		fmt.Println("> 1")
	default:
		fmt.Println("...")
	}
}

func goDemo()  {

	for i:= 0 ;i<5 ;i++{
		for j:=0;j<3;j++{
			if i==2 && j==2{
				fmt.Printf("%s----%s \n",i,j)
				goto breakTag
			}
		}
	}
	breakTag:
		fmt.Println("结束for循环")

}

func goBreak()  {
	breaklable01:
	for i:= 0 ;i<5 ;i++{
		for j:=0;j<3;j++{
			if i==2 && j==2{
				fmt.Printf("结束 %s----%s \n",i,j)
				break breaklable01
			}
		}
	}

	fmt.Println("goBreak 跳出二层for循环")


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值