Go语言基础(一)

package main

import (
	"fmt"
	"math"
	"reflect"
	"unsafe"
)
type Book struct{
	ID int

	title string
	content string
	author string

}
var(//因式分解关键字用于声明全局变量,全局变量允许声明但不使用

	r int
	s int
	t int
	e int
)
const(

	const1="22aaaa"
	const2=len(const1)
	const3=unsafe.Sizeof(const1)
	const4
)
const(
	//特殊常量
	iota1=iota
	iota2
	iota3
)
const(

	iota4 =1<<iota
	iota5=4<<iota
	iota6
	iota7
	iota8="111"
	iota9
	iota10=iota
	iota11
	iota12
	iota13
	iota14=111
	iota15
	iota16


)
const MAX int=3
var (

	num10 int
	num11 int
	num12 *int
	num13 float32
)
func max(num1 int,num2 int) int{
	if num1<num2{
		return num2;
	}
	return num1;
}

func main() {
	//非全局变量不允许声明后不使用
	fmt.Println("Hello,world!");
	fmt.Print("Hello,world!\n");
	var age int;
	age=1+3;
	fmt.Println(age);
	var a bool;
	fmt.Println(a);
	fmt.Println("Type:",reflect.TypeOf(a))
	var b int8;
	//int8 8位 -128-127
	//b=127;
	b=-128
	fmt.Println(b)
	fmt.Println("Type:",reflect.TypeOf(b))
	var c float32;
	c=1.1111;
	fmt.Println(c)
	fmt.Println("Type:",reflect.TypeOf(c))
	var d complex64;
	//复数a+bi,一定是i
	d=1+2i;
	fmt.Println(d)
	var e byte;
	fmt.Println(e)

	var f rune;
	fmt.Println(f)
	var g uint;
	g=1;
	fmt.Println(g)
	var h uintptr;
	h=1;
	fmt.Println(h)
	var i string;
	i="I'm 字符串"
	fmt.Println(i)
	var j=10;
	//判断变量类型
	fmt.Println("Type:",reflect.TypeOf(j))
	k:=123.3333
	fmt.Println("k Type:",reflect.TypeOf(k))
	l,m,n:=12,"22222",false
	fmt.Println("l Type:",reflect.TypeOf(l),"m Type:",reflect.TypeOf(m),"n Type:",reflect.TypeOf(n));

	var o,p,q=1,2,3
	_=o
	_=p
	_=q

	fmt.Println(o,p,q)
    r=11
	fmt.Println(r,s,t)
    fmt.Println("i的地址:",&i)
    var r1,r2=1,1
    r1=r2
	fmt.Println("&r1:",&r1,r1,"&r2:",&r2,r2)

    r2=3
    fmt.Println("r1:",r1,"r2:",r2)
    var str1,str2="111","2222";
    str1=str2
    fmt.Println("&str1:",&str1,str1,"&str2:",&str2,str2)
    const a1,a2,a3=1,2,3
    fmt.Println(a1,a2,a3)
    const a4=0;
    fmt.Println(a4)
    fmt.Println(const1,const2,const3,const4)
    fmt.Println(iota1,iota2,iota3)
	fmt.Println(iota4,iota5,iota6,iota7,iota8,iota9,iota10,iota11,iota12,iota13,iota14,iota15,iota16)
    fmt.Println("a1:",a1,"a2",a2)
    var c2=a1+a2


    fmt.Println(c2)
    c2=a1-a2

    fmt.Println(c2)
    c2=a1*a2
    fmt.Println(c2)
    c2=a1/a2
    fmt.Println(c2)
    fmt.Println("a1>a2?",a1>a2)
	fmt.Println("a1>=a2?",a1>=a2)
	fmt.Println("a1<a2?",a1<a2)
	fmt.Println("a1<=a2?",a1<=a2)
	fmt.Println("a1==a2?",a1==a2)
	fmt.Println("a1!=a2?",a1!=a2)
	fmt.Println("a1&a2?",a1&a2)
	fmt.Println("a1|a2?",a1|a2)
	fmt.Println("!(a1<a2)",!(a1<a2))
    fmt.Println("a^b",a1^a2)
    bool1,bool2:=true,false;
    fmt.Println((bool1&&bool2));
    fmt.Println(bool1||bool2)
    fmt.Println(!bool1&&bool2)

    fmt.Println(a1)
    b3,b4:=1,2
    b3=b4
	fmt.Println("b3:",b3,"b4:",b4)
    b3+=b4
	fmt.Println("b3:",b3,"b4:",b4)
    b3-=b4
	fmt.Println("b3:",b3,"b4:",b4)
    b3*=b4
	fmt.Println("b3:",b3,"b4:",b4)
    b3/=b4
	fmt.Println("b3:",b3,"b4:",b4)
    var b5 uint;
    var b6 uint;
    b5=10
    b6=11
    b5<<=b6
	fmt.Println("b5:",b5,"b6:",b6)
    b5>>=b6
	fmt.Println("b5:",b5,"b6:",b6)
    b5&=b6
	fmt.Println("b5:",b5,"b6:",b6)
    b5|=b6
	fmt.Println("b5:",b5,"b6:",b6)
    b5^=b6
	fmt.Println("b5:",b5,"b6:",b6)
    var c1 int;
    var ptr *int;
    fmt.Println("&c1:",&c1,"ptr:",ptr)
    ptr=&c1;
	//ptr是c1的地址
    c1=123


	fmt.Println("&c1:",&c1,"ptr:",ptr,"*ptr",*ptr)
    a5,a6:=9.4,5.34
    if a5<a6{
		fmt.Println("a5小于a6")
	}else if a5==a6{
		fmt.Println("a5等于a6")
	}else{
		fmt.Println("a5大于a6")
	}
    var a7 int;
    for a7=0;a7<10;a7++{
    	fmt.Println("a7:",a7)
	}
    var a9=10
    for a7<a9{
		a7++
    	fmt.Println("a7:",a7)

	}
    nums:=[6]int{1,2,4,5}
    for i1,num:=range nums{
    	fmt.Printf("第%d个值为%d\n",i1,num)
	}
    fmt.Println("max(4,5):",max(4,5))
    fmt.Println("min(4,5):",min(4,5))
    var num1 =10
    var num2 =13
	fmt.Print("交换值前:num1:",num1,"num2:",num2,"\n")
    swap1(num1,num2)
	fmt.Print("交换值前num1:",num1,"num2:",num2,"\n")
    var num3 *int

    var num4 *int
    num3=&num1
    num4=&num2
	fmt.Print("交换地址后:num3:",*num3,"num4:",*num4,"\n")
    swap2(num3,num4)
	fmt.Print("交换地址后:num3:",*num3,"num4:",*num4,"\n")
    var num5,num6=130,240
	fmt.Println("num5:",num5,"num6:", num6);
    num5,num6=swap4(num5,num6)
    fmt.Println("num5:",num5,"num6:", num6);


    //函数作为值
    getSqrtRoot:=func(x1 float64) float64{
    	return math.Sqrt(x1);
	}
    fmt.Println(getSqrtRoot(6))
    plusTwoNum:=func(num1 int,num2 int) (int){
    	return num1+ num2;
	}
    fmt.Println(plusTwoNum(12,3333))
    num11+=1
    num12=&num11
    fmt.Println(num11,*num12,num13)
    var array11 [10]int
    var i2 int
    for  i2=0;i2<10;i2++{
    	array11[i2]=i2
    	fmt.Println(array11[i2])
	}
    var array12 =[10]int{1,2,3}
    for i2=0;i2<10;i2++{
    	fmt.Println(array12[i2])
    }
    var array13 [10][11]int
    var j2 int
    for i2=0;i2<10;i2++{
    	for j2=0;j2<11;j2++{
    		array13[i2][j2]=i2*j2
    		fmt.Print(array13[i2][j2]," ")

		}
    	fmt.Println()
	}
    var a14=[3][4]int{{1,2,3,4},{0,1,2,4},{-1,-2,-3,-4}}
    for i2=0;i2< len(a14);i2++{
    	for j2=0;j2< len(a14[i2]);j2++{
    		fmt.Print(a14[i2][j2]," ")
		}
    	fmt.Println()
	}
    //三维数组
    var a15=[3][4][5]int{{{1,2,3,4,5},{2,3,4,4,6},{6,7,8,9,0},{11,23,34,5,66}},{{1,2,3,4,5},{2,3,4,4,6},{6,7,8,9,0},{11,23,34,5,66}},{{1,2,3,4,5},{2,3,4,4,6},{6,7,8,9,0},{11,23,34,5,66}}}
	var k2 int
    for i2=0;i2< len(a15);i2++{
    	for j2=0;j2< len(a15[i2]);j2++{
    		for k2=0;k2< len(a15[i2][j2]);k2++{
    			fmt.Print(a15[i2][j2][k2]," ")
			}
			fmt.Println()
		}
		fmt.Println()

	}
    var p1 *int
    var p3 *float32
    if p1!=nil{
    	fmt.Println("p1不为空")
	}else{
		fmt.Println("p1为空")
	}
    if(p3!=nil){
    	fmt.Println("p3不为空")
	} else{
    	fmt.Println("p3为空")
	}
    p1=&i2
    var float1 float32=13.4
    p3=&float1
	if p1!=nil{

		fmt.Println("p1不为空,p1=",p1,"*p1=",*p1)
	}else{
		fmt.Println("p1为空")
	}
	if p3!=nil{

		fmt.Println("p3不为空,p3=",p3,"*p3=",*p3)
	}else{
		fmt.Println("p3为空")
	}
    a16:=[]int{12,13,14}
    var ptr2 [MAX] *int
    for i2=0;i2<MAX;i2++{
    	ptr2[i2]=&a16[i2]
	}
    for i2=0;i2< len(ptr2);i2++{
    	//fmt.Println(*ptr2[i2])
    	fmt.Printf("a16[%d]:%d\n",i2,*ptr2[i2])
	}
    var ptr5 *int
    ptr5=&i2

    fmt.Println(*ptr5)
    var ptr55 **int
    ptr55=&ptr5
    fmt.Println(**ptr55)
    var book1 Book
    book1.ID=1
    book1.content="12222"
    book1.title="Python"
    book1.author="aaa"
    fmt.Println("ID:",book1.ID," content:",book1.content," author:",book1.author," title:",book1.title)
    var book [10]Book
    for i2=0;i2<10;i2++{
    	book[i2].ID=i2
    	book[i2].author="author"
    	book[i2].title="title"
    	book[i2].content="content"


	}
    fmt.Println(book)
    for i2=0;i2< len(book);i2++{
    	fmt.Println("ID:",book[i2].ID," content:",book[i2].content," author:",book[i2].author," title:",book[i2].title)
	}
	printBook(book1)
    printBook2(&book1)
    var slice0 []int
	if slice0==nil{
		fmt.Println("切片slice0是空的")
		fmt.Println("slice0:")
		printSlice(slice0)
	}

    var  slice1=make([]int,5)
    for i2=0;i2< len(slice1);i2++{
    	slice1[i2]=i2
	}
   // slice1:=[]int{1,2,3,4,5}
	fmt.Println("slice1:")

    //打印切片
    printSlice(slice1)
    //截取1-4
    fmt.Println("截取1-4,不包括4")
    printSlice(slice1[1:4])
    fmt.Print("截取0-5,不包括5\n")
    printSlice(slice1[0:5])
    /*fmt.Println("截取0-7")
    printSlice(slice1[0:7])*/
    fmt.Println("截取4之前的")
    printSlice(slice1[:4])
    fmt.Println("截取1之后的")
    printSlice(slice1[1:])
    var slice2 []int
    printSlice(slice2)
    //追加空切片
    slice2=append(slice2,0)
	printSlice(slice2)
    //加一个元素
    slice2=append(slice2,1)
	printSlice(slice2)
    //加多个元素
    slice2=append(slice2,2,3,4,5,6,7,8)
	printSlice(slice2)
    //把slice3的容量扩充到slice2的两倍
    slice3:=make([]int,len(slice2),cap(slice2)*2)
    //把slice2的内容拷贝到slice3中
    copy(slice3,slice2)
    printSlice(slice3)

    //go语言range
    //求切片的和
    slice4:=[]int{1,2,3,4,5,6,7}
    sum:=0
    for _,s1:=range slice4{
    	sum+=s1
	}
    fmt.Println("slice4的和为:",sum)
    for i2,s2:=range slice2{
    	fmt.Printf("slice4[%d]=%d\n",i2,s2)
	}
    //range显示map键值对
    kvs1:=map[string]string{"a":"apple","b":"banana"}
    for k1,v1:=range kvs1{
    	fmt.Println("k1:",k1," v1:",v1)
	}
    //range枚举unicode字符串
    for i2,c1:=range "Goto学习"{
    	fmt.Println(i2,c1)
	}













}
func printSlice(x  []int){
	fmt.Printf("len=%d,cap=%d,slice=%d\n", len(x), cap(x),x)
}
func printBook(book1 Book) {
	fmt.Println("ID:",book1.ID," content:",book1.content," author:",book1.author," title:",book1.title)
}
func printBook2(book1 *Book){
      fmt.Println("ID:",book1.ID," content:",book1.content," author:",book1.author," title:",book1.title)
}
func min(num1 int,num2  int) int{
	if(num1>=num2){
		return num2
	}
	return num1
}
func swap1(num1 int,num2 int){
	t=num1
	num1=num2
	num2=t
	fmt.Print("交换值:num1:",num1,"num2:",num2,"\n")
}
func swap2(num3 *int,num4 *int){
	t=*num3
	*num3=*num4
	*num4=t
	//fmt.Print("&num3:",num3,"&num4:",num4)
	fmt.Print("交换地址:num3:",*num3,"num4:",*num4,"\n")
}
//函数返回多个值
func swap4(num5 int,num6 int) (int,int){
	t=num5
	num5=num6
	num6=t
	return num5,num6
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值