go语言学习--基础语法知识篇

一、前言

随着区块链的流行,以及当今对系统高性能、高并发的要求越来越高,对语言的并发处理性能要求也越来越高。
而Go语言则是众多编程语言中并发性高、简洁的一门。十分适合做高性能高并发的系统。

参考文章
区块链的入门了解
Go语言的基本语法知识
Go语言进阶学习
Go Web开发基础学习
web框架学习

二、基础知识

  1. 代码结构(包,引入,函数)

  2. 变量(掌握 声明:var a type,:=,赋值,作用域)

var i int 
var j int = 2
k:=1
var ptr *int 
ptr=&u=i
  1. 语句(goto,无需括号和";",掌握循环语句的使用和range范围)
	var i int = 1
	for true{// 无限循环
		if i < 10 {// 无需写括号,使用空格
			fmt.Print("yes")
			i++
		}else{
			break
		}
	}
	 kvs :=map[string]string{"title":"hello","author":"lyf"}
	 for k,v:=range kvs{
	 	fmt.Print(k,v)
	 }
  1. 高级数据类型(了解掌握数组,切片(动态数组),结构体,map)
var arr int[10]
  var slice = make([]int ,3,10)
	slice = append(slice, 1)// 在长度后面加,拓展
	slice[0]=1
	temp:=slice[:10]
	fmt.Print(temp[:])
	 kvs :=map[string]string{"title":"hello","author":"lyf"}
	 for k,v:=range kvs{
	 	fmt.Print(k,v)
	 }
  1. 函数(值传递和引用传递)
  2. 指针的使用(*,&)

与Java使用不同点:引入切片、结构体和指针的简单使用,变量声明 类型位置相反,无需括号和";",引入goto语句,使用函数时直接调用而不是对象调用该方法。

package main // 包声明

import (
	"fmt"
) //引入包,引入必须使用不然报错

/**
 *
 *
 */

//(num1,num2 )  receiver?
func fun1(num1 float32,num2 int)  int{
	return num2
}

// go可以返回多个值
func fun2() (string,string,int) {
	return "test1","test2",3
}

// go具有指针可以进行引用传递(通过指针)

// 引用传递
func swap(a *int,b*int)  {
	var temp int
	temp = *a
	*a = *b
	*b = temp// 指针变量
}

func main() { // {不能单独放一行,和编译器规则有关?
	fmt.Print("hello")

	//关键词 https://www.runoob.com/go/go-basic-syntax.html

     // 声明变量
     var a int // 无需; 变量类型放后面
	 a =10
	 fmt.Println("a为",a)//,分割和JS console.log一样

	 // 声明多变量
	 var b,c int
	 b = 10
	 c = 10
	 fmt.Println("b+c",b+c)


	//Sprintf格式化字符串 %d 表示整型数字,%s 表示字符串
	var stockCode=123
	var endDate="2020-12-31"
	var url="Code=%d&endDate=%s"
	var targetUrl=fmt.Sprintf(url,stockCode,endDate)
	fmt.Println(targetUrl)


	var str string ="i am go language"

	fmt.Println("str:size为", len(str),",",str)

	// 逻辑运算、数值运算与Java C保持一致
    a++
	a--
	a+=a

	// 循环的写法
	// goto语句
	var i int = 1
	for true{// 无限循环
		if i < 10 {// 无需写括号,使用空格
			fmt.Print("yes")
			i++
		}else{
			break
		}
	}

    // := 未声明的使用引用
    // label标签,label:
    for i:=1;i<10;i++{
    	fmt.Print(i)
	}

	//var flag bool =true
	//if flag{
	//	goto label
	//}
    fmt.Println(fun2())

    num1:=1
    num2:=2
    swap(&num1,&num2)//传入地址

    fmt.Print(num1,";",num2)

    // 数组声明
    var arr[10] int
    for i:=0;i<10;i++{
    	arr[i]=i
	}


    // 指针
    var ptr *int //声明指针变量(int型)
    ptr = &num2 // 存储该变量的地址, *ptr就是指向该地址获取该地址的value,指针为空则nil
    fmt.Print("*ptr",*ptr,"ptr",ptr,";&ptr",&ptr,"num2",num2,"&num2",&num2)

   // 结构体
   //结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称
	type Books struct {
		title string
	}

	fmt.Print(Books{
		title: "test",
	})

    var book1 Books
    book1.title="hello"
    fmt.Print(book1.title)

    // 切片
    // 动态数组
    var slice = make([]int ,3,10)
	slice = append(slice, 1)// 在长度后面加,拓展
	slice[0]=1
	temp:=slice[:10]
	fmt.Print(temp[:])



     // range范围
     var arrs = make([]int,3,3)
     arrs[0]=1
     arrs[1]=2
     arrs[2]=3

     for i:= range arrs{
     	fmt.Print(i)
	 }

	 kvs :=map[string]string{"title":"hello","author":"lyf"}

	 for k,v:=range kvs{
	 	fmt.Print(k,v)
	 }

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值