go语言(应付考试的概念)

1.go语言的特点和优势:简单易学,自由高效,强大的标准库,部署方便,原生支持并发,稳定性强,垃圾回收

2.go语言定义包名的关键字(import)

3.go函数以关键字(func)开头

4.go语言中使用(大小写)来决定标识符是否可以被外部包调用

5.在go语言中有多种变量声明方法:

var 变量名  变量类型          //标准格式
var 变量名                   //自动推断格式
变量名 := 值               //简短声明
var(                       //批量定义
变量名  变量类型
变量名  变量类型
变量名  变量类型
)

6.三种打印语句:

printf();   //不会自动换行,需要占位符
println();   //自动换行,不需要占位符
print();     //不会自动换行,不需要占位符

7.六种数据类型

(1). 整型:

无符号:int8,int16, int32, int64, int

有符号:uint8, uint16, uint32, uint64, uint

(2). 浮点型:float32, float64

(3). 布尔型:bool

(4).字符串: string

(5). 字符: byte,rune

(6).复数型:complex64, complex128

8.类型转换:

格式如:T(表达式) 

T表示需要转换的类型表达式可以是变量,数值,函数返回值

9.常量定义格式:const  常量名   常量类型      

10.因为go语言暂时没有枚举,  可以用常量代替枚举

const(
    name = 0
    id = 1
    age = 2
)

11. iota ,系统定义的可以被编译器修改的常量值,通俗的说:就是常量的计数器.

每出现一个常量,iota 加1

12.

算术运算符:+,    -,    *,    /,    %,  ++,   ---

关系运算符:  ==,   !=,  >,  <,  >=,  <= 

逻辑运算符: &&,   ||,  ! 

位运算符: &,  |,   ^,   <<,   >>

其他运算符: &, *

二  函数的概念

函数定义格式:  

func  函数名(参数列表)(返回参数列表){
     //函数体
}

函数变量     (函数也可以作为值)(函数类型的变量

列如:

//指明这个文件属于哪个包
package main

//导入程序所依赖的包
import (
	"fmt"
	"strings"
)

//程序入口
func main(){
	result := StringToLower("AbcdefGHijklMNOPqrstUVWxyz", processCase)
	fmt.Println(result)
	result = StringToLower2("AbcdefGHijklMNOPqrstUVWxyz", processCase)
	fmt.Println(result)
}

/*  
自定义的函数
参数:str string    
返回参数: 返回一个string的变量
功能:处理字符串, 奇数转换成大写,偶数转换成小写
*/
func processCase(str string)string{
	result := ""
	for i, value := range str{   //for的range模式,对string,slice, array,map 等进行迭代循环
		if i % 2 == 0{
            //将value转换成大写返回
			result += strings.ToUpper(string(value))
		}else {
            //将value转换成小写返回
			result += strings.ToLower(string(value))
		}
	}
	return result
}

/*
自定义的函数
参数:参数1:str string    参数2: f func(string)string  //函数变量
返回参数:f(str)   //返回一个函数变量
功能:打印 f  , 返回经过processCase转换的字符串
*/
func StringToLower(str string, f func(string)string) string{
	fmt.Printf("%T \n",f)
	return f(str)
}

/*
自定义的函数
参数:参数1:str string    参数2: f func(string)string  //函数变量
返回参数:f(str)   //返回一个函数变量
功能:打印 f  , 返回经过processCase转换的字符串
*/
func StringToLower2(str string,f func(string)string) string{
	fmt.Printf("%T \n", f)
	return f(str)
}

匿名函数: 

匿名函数没有函数名,只有函数体

格式如下:

func (参数列表) (返回参数列表){
     //函数体
}

那么匿名函数有什么用呢??????

1.定义匿名函数时调用匿名函数

package main

import (
"fmt"
)

func main(){
	func(data int){  //调用匿名函数
		fmt.Println(data)
	}(100) //(100) ()中的参数是100
}

2.将匿名函数赋值给变量

package main

import (
	"fmt"
)

func main(){
	t:= func(data string){  //把匿名函数调用给变量
		fmt.Println(data)
	}
	t("你好!")    //调用变量
}

3.匿名函数用作回调函数

回调函数: 假如您定义了一个函数,这个函数是  func  f(n)string{ //函数体} 

func  f(n)string{ //函数体}  这个函数的参数是n ,返回类型是string ,这个函数就是一个普通的函数

假设一下,假如这个函数的参数n  是一个函数呢?

func  f( (函数n) )string {//函数体}    这个就是回调函数

f 这个函数调用完了以后,就回过头来调用 f  的参数 n

package main

import (
	"fmt"
	"math"
)

func main(){
    //切片
	arr := []float64{6, 18,16,25,90}

	square(arr,func(v float64){
		v = math.Sqrt(v)
		fmt.Printf("%.2f\n",v)
	})

	square(arr,func(v float64){
		v = math.Pow(v,2)
		fmt.Printf("%.0f\n",v)
	})
}

func square(ay[]float64,f func(float64)){   //回调函数
	for _, value := range ay{
		f(value)    
		//fmt.Printf("%.4f\n",value)
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值