Go语言学习第1关

1. Mac下用VsCode配置Go语言环境

  • 官网下载Go语言包 命令行中使用go version命令查看下载的go版本 使用go env查看go相关环境
  • 进入VsCode下载Go拓展 新建.go文件 按推荐install相关依赖即可(使用手机热点或科学上网)
  • 编辑好基础go文件 使用 go run … 运行

go run 时报错:package command-line-arguments is not a main package ?

package main //packge main即可 包名不一定和文件夹同名

import "fmt"

func main() {
    
    

fmt.Println("hi golang")

}

2. fmt包 Print相关 注释 定义变量

注意看Print Println Printf三者区别以及变量定义方法

package main

import "fmt"

func main() {
    
    
	fmt.Println("hi golang","hi dou")
	fmt.Print("hi golong","hi dou")

	var a = "aaa"
	fmt.Printf("%v",a)
	var b int
	b = 1
	fmt.Printf("%v",b)
	//短变量声明法 只能用于函数内部 不能作为全局变量
	c := 5
	fmt.Printf("%v",c)
//hi
/*
hi
hi
*/
}

hi golang hi dou
hi golonghi douaaa15%

go语言中变量声明必须使用

3. 变量常量命名规则

命名规范不赘述
注意大小写要区分开即可
定义变量基本方法看上节
以下是多变量声明 匿名变量

package main

import (
	"fmt"
)

func main() {
    
    
	fmt.Println("hi golang")
	
	//一次声明多个变量
	var(
		a string
		b int
	)
	a = "a"
	b = 1
	fmt.Println(a,b)
	c,d := "s",1
	fmt.Println(c,d)
	
	//匿名变量不占命名空间 不占内存 不存在重复声明
	user,_ := getUser()
	fmt.Println(user)
	
	const PI = 3.14
	fmt.Println(PI)

	//iota计数器只在常量里使用
	const(
		n1 = 100
		n2
		n3 = iota
		_
		n4
	)
	/*
	100 100 2 4
	*/
}
func getUser()(string,int){
    
    
	return "zhangsan",10
}

go fmt … 格式化文档

4. 数据类型–整型

package main

import (
	"fmt"
	"unsafe"
)

func main() {
    
    
	var num int8 = 10 //130? error
	fmt.Printf("%T\n",num)
	fmt.Println(unsafe.Sizeof(num))
	/*
	int8 -127 128 1Byte
	uint8 0 255 1Byte
	int16 -2^15 2^15-1 2Byte
	*/
}

5. 基本数据类型–浮点型 布尔型

bool类型与0 1不能替换

package main

import (
	"fmt"
	"unsafe"
)

func main() {
    
    
	var num int8 = 10 //130? error
	fmt.Printf("%T\n",num)
	fmt.Println(unsafe.Sizeof(num))
	/*
	int8 -127 128 1Byte
	uint8 0 255 1Byte
	int16 -2^15 2^15-1 2Byte
	*/
	var a float32 = 3.12   //4Byte  float64 8Byte
	fmt.Printf("%v -- %f",a,a)
	//64位操作系统浮点数默认是float64
}

6. 基本数据类型–字符串类型

package main

import (
	"fmt"
	"strings"
)

func main() {
    
    
	//多行字符串
	s := `hi
	golang`
	
	fmt.Println(s)

	str := "dou"
	fmt.Println(len(str))

	str1 := "123-456-789"
	slice :=strings.Split(str1,"-")
	fmt.Println(slice) //返回切片
	str2 := strings.Join(slice,"*")
	fmt.Println(str2)

	//其他方法用时再查
}

7. 数据类型–byte rune

package main

import "fmt"

//字符属于int类型

func main(){
    
    
	a := 'a'
	fmt.Printf("%v -- %c",a,a) //97 a
	//直接输出byte得码值 %c得字符

	/*
	uint8 即byte类型 代表了ACSII中的一个字符
	rune 实际上是int32 代表一个UTF-8字符
	一个汉字占3字节 一个字母占1字节
	*/

	s := "你好 golang"
	for _,v := range s{
    
      //range遍历当rune时才能用
		fmt.Printf("%v %c\n",v,v)
	}

	s1 := "hi golang"
	str1Arr := []byte(s1)
	str1Arr[0] = 'g'
	fmt.Println(string(str1Arr))

	s2 := "你好 golang"
	str2Arr := []rune(s2)
	str2Arr[0] = '我'
	fmt.Println(string(str2Arr))
}

8. 运算符以及位运算符

余数 = 被除数-(被除数/除数)❌除数
自增自减运算不能作为运算符 只能作为语句单列一行 无前++ - -
其他很简单 不赘述

9. if else for

package main

import "fmt"

func main() {
    
    
	//打印100以内的偶数
	for i:=1;i<=100;i++{
    
    
		if i%2 ==0{
    
    
			fmt.Printf("%d ",i)
		}
	}
	fmt.Println()
	//打印九九乘法表
	for i:=1;i<=9;i++{
    
    
		for j:=1;j<=i;j++{
    
    
			fmt.Printf("%v*%v=%v\t",i,j,i*j)
		}
		fmt.Println()
	}
}

10. for range switch case

var arr = []string{
    
    "a","b","c"}
	for k,v := range arr{
    
    
		fmt.Println(k,v)
	}
	var n = 2
	switch n {
    
    
	case 1,2,3:
		fmt.Println("g")
		fallthrough
	case 4,5,6:
		fmt.Println("m")
		break
	default:
		fmt.Println("error")
	}

11. continue break goto

continue break较简单 不赘述
break也可以配合label使用

var age = 24
	if age <= 30{
    
    
		fmt.Println("a")
		goto label
	}
	fmt.Println("b")
label:
	fmt.Println("c")

12. 数组

package main

import "fmt"

func main() {
    
    
	//各种初始化方法
	var arr1 [3]int
	var arr2  = [3]int{
    
    1,2,3}
	arr3 := [3]string{
    
    "a","b","c"}
	var arr4 = [...]int{
    
    1,2,3,4,5,6}
	arr5 := [...]int{
    
    1:1,5:3}
	fmt.Println(arr1,arr2,arr3,arr4,arr5)
	//数组遍历
	arr6 := [...]string{
    
    "a","b","c"}
	for k,v := range arr6{
    
    
		fmt.Println(arr6[k],v)
	}
	//数组和基本数据类型都是值类型 其他为引用类型
	//数组展示 值只是简单复制 不会互相影响
	var arr7 = [...]int{
    
    1,2,3}
	arr8 := arr7
	arr7[0] = 0
	fmt.Println(arr7,arr8)
	//切片演示 改变arr0 arr9随之改变 将arr9的地址指向arr0
	var arr0 = []int{
    
    1,2,3}
	arr9 := arr0
	arr0[0] = 0
	fmt.Println(arr0,arr9)

	//多维数组
	var arrr = [3][2]int{
    
    {
    
    1,2},{
    
    3,4},{
    
    5,6}}
	fmt.Println(arrr[2][1])
}

猜你喜欢

转载自blog.csdn.net/m0_73482105/article/details/126945894