自学【golang】day-01

146 阅读1分钟

Golang 笔记 day-01

注意:引用包必须使用声明变量必须使用必须有main包必须要main入口函数

go推荐使用驼峰命名,使用行注释


Mac 打包 Linux window

CGO_ENABKED=0 GOOS=linux  GOARCH=amd64 go build main.go
CGO_ENABKED=0 GOOS=windows  GOARCH=amd64 go build main.go

项目结构

  • project
    • src
      • demo1(项目名)
        • 包名

变量声明

// 变量声明必须使用
var a int
var (
  a int
  b string
  c bool
)
var name = "阿斯顿" // 类型推导
a := 1 // 简短变量声明 只能在函数哪使用
_ // 匿名变量 接收不需要的值



常量

// 不可变
const pi = 3.1415926
// 批量声明常量
const (
	code = 200
  a = 1
  b = "测试"
)
// 后面未设置值,值和上面一样
const (
	code = 200
  a = iota
  b 
)
// 在const 关键字出现时重置,每出现一次 iota加1 可以理解为const的索引 ,同一行iota相同
const (
	a,b=iota+1,iota+2
)
// a=1 ,b=2 因为 iota =0

// <<左移 1 左移1位是 10 
const (
	_ = iota
  kb = 1 << (10 * iota) // 1024
  mb = 1 << (10 * iota) 
)

const (
	a = 10
	x = 20
	b = iota
	c
	d
	_
	f
)

func main() {
	fmt.Println(a)
	fmt.Println(x)
	fmt.Println(b)
	fmt.Println(c)
	fmt.Println(d)
	fmt.Println(f)
}
// 10 20 2,3,4,6

fmt包的使用

fmt.Print() //在终端打印
fmt.Pintf("name=%s",'大帅比') // %s字符串 %b二进制 %o八进制 %x十六进制 %T变量类型 %v值 
fmt.SPintf("%s%s",name,age) // 字符串拼接
fmt.Pintln("test") //打印完指定内容后换行


二进制转十进制

abc=c * 2^0 + b2^1 + a2^2


常用包

import (
	"fmt"
  "math"
)

数据类型 - 01

浮点数

// 默认Go语言中的小树类型是float64
// float32不能赋值给float64
//浮点值
float32 float64
#### 	复数
//复数
complex64 complex128 

bool

//bool 不能将数字类型转bool 默认false
var a =false

字符串

//字符串只能用双引号包裹,单引号只能包裹单独的字符
var b = "abc"
var c = 'a'
var d = '你'
//多行字符串
var d =`
十大,阿斯顿
阿斯顿
`
strings.Split(“aasdasdasdasd”,'s') // 字符串分割
len()
strings.Contaions //字符串是否包含
//字节: 1字节=8Bit(8个二进制位)
// 1个字符‘a’=1个字节 1kb=1024个字节
//一个utf8编码汉子 一般占3个字节

流程控制 - 01

if

if age > 18 {
  fmt.printf()
}else if age > 6 {
  
}else{
  
}

for

// 局部变量
for i :=0;i<10;i++{
  fmt.Println(i)
}

// 全局变量
var i =4 
for ;i<10;i++{
  fmt.Println(i)
}

// 无限循环
for {
  
}
s := "hello你好"
for i,v := range s{
  
}


// 跳出当前循环
for i := 0; i < 10; i++ {
  if i == 5 {
    break
  }
}
// 跳过本次循环,继续下一次循环
for i := 0; i < 10; i++ {
		if i == 5 {
			continue
		}
}

// 跳出两次循环 
for i := 0; i < 10; i++ {
	for f := 0; f < 5; f++ {
		if f == 3 {
			i=10
      break
		}
	}
}
// goto  跳转到下面的代码
for i := 0; i < 10; i++ {
	for f := 0; f < 5; f++ {
		if f == 3 {
			goto myBreak
		}
	}
}
myBreak:
	{
		fmt.Println("over")
	}

练习

package main

import (
	"fmt"
)

func main() {
	chengfabiao()
	runeFn()
}

//打印99乘法表
func chengfabiao() {
	for a := 1; a < 10; a++ {
		for b := 1; b <= a; b++ {
			c := a * b
			fmt.Printf("%dx%d=%d\t", b, a, c)
		}
		fmt.Println()
	}
}

// 打印汉字
func runeFn() {
	s := "nihao测试"
	s1 := []rune(s)
	for _, v := range s1 {
		str := fmt.Sprintf("%c", v)
		if len(str) >= 3 {
			fmt.Println(str)
		}
	}
}