首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Go编程点滴

    Go编程模式 - 5.函数式选项

    目录 一个常见的HTTP服务器 拆分可选配置 函数式选项 更进一步 ServerConfig 我们先来看看一个常见的HTTP服务器的配置,它区分了2个必填参数与4个非必填参数 type ServerCfg int Protocol string Timeout time.Duration MaxConns int TLS *tls.Config } // 定义一个Option类型的函数 ,它操作了Server这个对象 type Option func(*Server) // 下面是对四个可选参数的配置函数 func Protocol(p string) Option { return 就是需要编写多个Option函数,代码量会有所增加。 如果大家对这个感兴趣,可以去看一下Rob Pike的这篇blog 。 首先,我们改造一下函数Option // 返回错误 type OptionWithError func(*Server) error 然后,我们改造一下其中两个函数作为示例 func Protocol

    37610发布于 2021-08-05
  • 来自专栏叽叽西

    Go 函数

    函数定义 Go 语言函数定义格式如下: func function_name( [parameter list] ) [return_types] { 函数体 } 以下实例为 max() 函数的代码 引用传递 | 引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。 默认情况下,Go 语言使用的是值传递,即在调用过程中不会影响到实际参数。 *x = *y /* 将 y 值赋给 x */ *y = temp /* 将 temp 值赋给 y */ } 函数用法 Go 语言函数作为实参 Go 语言可以很灵活的创建函数,并作为另外一个函数的实参 语言函数闭包 Go 语言支持匿名函数,可作为闭包。 语言函数方法 Go 语言中同时有函数和方法。

    36000编辑于 2022-05-17
  • 来自专栏新亮笔记

    Go - 函数

    概述 学习了一些基础语法,开始学习写函数了,分享几个自己写的函数。 MD5 获取当前时间戳 获取当前时间字符串 生成签名 函数定义 func function_name(input1 type1, input2 type2) (type1, type2) { // 值传递 传递参数时,将参数复制一份传递到函数中,对参数进行调整后,不影响参数值。 Go 语言默认是值传递。 引用传递 传递参数时,将参数的地址传递到函数中,对参数进行调整后,影响参数值。 这个是 Go - Struct 结构体的例子: //demo_13.go package main import ( "encoding/json" "fmt" ) type Result 生成签名 //demo_26.go package main import ( "crypto/md5" "encoding/hex" "fmt" "sort" )

    42130发布于 2019-07-16
  • 来自专栏一行舟

    Go 函数Go面试系列)

    Hi,我是行舟,今天和大家一起学习Go语言的函数函数Go语言中的一等公民,既可以单独定义,也可以作为参数传递。 Go语言中函数和方法不是一个概念,方法是属于结构体的。 这涉及到Go语言面向对象的编程哲学,我们在后面的文章中再讨论。 声明函数 func 函数名(传入参数) (返回值) { 函数体 } 用func关键字声明一个函数。 在Go语言中,传入参数和返回参数完全相同的函数是同一类函数Go语言中的类型(type)也是非常重要的概念,我们后续单独写文章介绍,当前只需要记住判断两个函数是否同类型的标准就可以了。 返回值 Go语言中的函数可以有多个返回值,同时我们也可以对返回值进行命名。 Go语言中函数的最后一个形参类型前加...代表不限定参数个数。

    53020编辑于 2022-08-25
  • 来自专栏飞鸟的专栏

    Go-函数-匿名函数

    Go 语言中,函数可以是匿名的,也就是说函数可以在定义时不给它们命名。匿名函数可以在其他函数内部定义,并且可以被赋值给变量或作为参数传递给其他函数。匿名函数通常用于需要在程序中定义临时函数的情况。 定义匿名函数Go 语言中,可以使用关键字 func 定义匿名函数,然后可以将其分配给变量或直接调用。 ,函数体可以包含任何合法的 Go 代码。 ,匿名函数被赋值给变量 add,然后可以像普通函数一样调用。 匿名函数还可以作为参数传递给其他函数

    47120编辑于 2023-04-20
  • 来自专栏我的博客

    Go函数知识

    1.函数格式 func funcName(input1 type1, input2 type2) (output1 type1, output2 type2) { //这里是处理逻辑代码 //返回多个值 add(a *int) int { *a=*a+1 return *a } func main() { a:=1 b:=add(&a) fmt.Println(a) fmt.Println(b) } 5. defer 如果有很多调用defer,那么defer是采用后进先出模式可以在函数中添加多个defer语句。 当函数执行到最后时,这些defer语句会按照逆序执行,最后该函数返回 6.函数作为类型 type typeName func(input1 inputType1 , input2 inputType2 _空操作:别名操作的话调用包函数时前缀变成了我们的前缀

    63680发布于 2018-04-28
  • 来自专栏Golang语言社区

    Go 语言函数

    函数是基本的代码块,用于执行一个任务。 Go 语言最少有个 main() 函数。 你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。 函数声明告诉了编译器函数的名称,返回类型,和参数。 Go 语言标准库提供了多种可动用的内置的函数。例如,len() 函数可以接受不同类型参数并返回该类型的长度。如果我们传入的是字符串则返回字符串的长度,如果传入的是数字,则返回数组中包含的函数个数。 ---- 函数定义 Go 语言函数定义格式如下: func function_name( [parameter list] ) [return_types] { 函数体} 函数定义解析: func ()函数,执行结果为: 最大值是 : 200 ---- 函数返回多个值 Go 函数可以返回多个值,例如: package mainimport "fmt"func swap(x, y string) ( 引用传递 引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。 默认情况下,Go 语言使用的是值传递,即在调用过程中不会影响到实际参数。

    94180发布于 2018-03-22
  • 来自专栏Golang语言社区

    go 内置函数

    Go 的内置函数不拥有前面提到的go的标准类型,因此内置函数不能作为一个函数值赋值给函数类型的变量。 close close用于关闭一个channel,使用close函数要注意以下几点: 关闭一个只接受的channel会导致错误 在一个已经关闭的channel上发送数据会导致panic 关闭一个nil ,函数中的defer将会被正常执行,panic如果不被recover将会导致程序崩溃 recover() interface{} 在defer的函数中调用recover,可以将调用defer的后面的函数体的 = nil { fmt.Println("run time panic:%v"x) } }() g() } 上面的代码中,如果在函数 并且这种情况下,程序将会继续执行,只是g函数中panic之后的代码会被跳过。

    1.1K50发布于 2018-03-27
  • 来自专栏python-爬虫

    Go-函数

    一.函数的命名 无参数无返回值 方式一 func 函数名()(){} 方式二 func 函数名(){} 无参数有返回值 方式一 func 函数名()(返回参数1的数据类型1){} 定长参数,有返回值 func 函数名(参数1 类型,参数2 类型)(返回参数1的数据类型1,返回参数2的数据类型){} //如果参数1与参数2的数据类型相同 func 函数名(参数1,参数2 类型)(返回参数1的数据类型 ){} 定长参数,无回值 //方式一 func 函数名(参数1 类型,参数2 类型){} //方式二 func 函数名(参数1 类型,参数2 类型)(){} 不定长参数 //方式一 func 函数名( 类型){} //不定长的参数必须写在定长的参数后面 //不定长参数所有数据类型 func 函数名(不定长参数1... interface{}){} 匿名函数 //定义 func (参数一,参数二)(返回参数 命名返回值 package main import "fmt" func abc()(a int,b int){ //var a,b int 相当于默认执行这条 //但是ab只在函数内生效函数外部生效

    37430发布于 2020-06-19
  • 来自专栏代码世界

    go-函数

    函数是组织好的、可重复使用的、用于执行指定任务的代码块。 函数 Go语言中支持函数、匿名函数和闭包,并且函数Go语言中属于“一等公民”。 函数的定义 Go语言中定义函数使用 func 关键字,具体格式如下: 1 func 函数名(参数)(返回值){ 2 函数体 3 } 其中: 函数名:由字母、数字、下划线组成。 可变参数 可变参数是指函数的参数数量不固定。Go语言中的可变参数通过在参数名后加 ... 来标识。 注意:可变参数通常要作为函数的最后一个参数。 返回值 Go语言中通过 return 关键字向外输出返回值。 多返回值 Go语言中函数支持多返回值,函数如果有多个返回值时必须用()将所有返回值包裹起来。 匿名函数 函数当然还可以作为返回值,但是在Go语言中函数内部不能再像之前那样定义函数了,只能定义匿名函数

    1.1K30发布于 2020-03-05
  • 来自专栏Golang语言社区

    Go 语言社区】Go文件操作函数

    所以用的时候要import os包 包含以下的这些函数 func Create(name string) (file *File, err error) 直接通过纹面创建文件 ","王五","25"}) w.Write([]string{"4","赵六","26"}) w.Flush() } //该代码片段来自于: http://www.sharejs.com/codes/go

    92160发布于 2018-03-20
  • 来自专栏Golang语言社区

    Go 语言社区】Go 语言函数--转

    Go 语言函数 函数是基本的代码块,用于执行一个任务。 Go 语言最少有个 main() 函数。 你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。 函数声明告诉了编译器函数的名称,返回类型,和参数。 Go 语言标准库提供了多种可动用的内置的函数。例如,len() 函数可以接受不同类型参数并返回该类型的长度。 ---- 函数定义 Go 语言函数定义格式如下: func function_name( [parameter list] ) [return_types] { 函数体 } 函数定义解析: func:函数由 max()函数,执行结果为: 最大值是 : 200 函数返回多个值 Go 函数可以返回多个值,例如: package main import "fmt" func swap(x, y string 引用传递 引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。 默认情况下,Go 语言使用的是值传递,即在调用过程中不会影响到实际参数。

    1.6K80发布于 2018-03-20
  • 来自专栏Devops专栏

    7.Go函数

    7.Go函数 1:函数定义 我想问一下大家,在大家小时候有没有玩过超级玛丽这个游戏?有同学说玩过,这确实是一款非常经典的游戏。 上面的函数是我们自己定义的(一般我们称为自定义函数),但是我们也已经学过不少GO语言自己定义的函数。 ) } 另外一种写法: image-20210428010454433 以上程序的输出结果是3, 5 5函数返回值 (5.1) 返回值函数基本定义 前面我们学习过一个GO自带的函数,len( ) GO语言中使用函数类型的方式完成函数的调用,可能有同学感觉这种方式比较麻烦,不如我们前面讲解的方式使用起来简单。 在Go语言里,所有的匿名函数(Go语言规范中称之为函数字面量)都是闭包。 根据以上定义,那么上一节定义的匿名函数其实就是闭包。

    60510编辑于 2022-01-17
  • 来自专栏Golang开发

    Go基础——function函数

    函数的声明 在 Go 语言中,函数声明通用语法如下: func 函数名称( [参数列表] ) ([返回值列表]) { 执行语句 } 1.函数的声明以关键词 func开始 。 参数是可选的,即函数可以不包含参数。参数就像一个占位符,这是参数被称为形参,当函数被调用时,将具体的值传递给参数,这个值被称为实际参数。 Go函数支持多返回值。 函数可以有返回值也可以没有。 调用示例函数的方法如下: calculateBill(10, 5) 完成了示例函数声明和调用后,我们就能写出一个完整的程序,并把商品总价打印在控制台上: func calculateBill(price 函数Println()就属于包fmt。与其他语言不同的是在Go语言中函数名字的大小写不仅仅是风格,更直接体现了该函数的是私有函数还是公有函数函数名首字母小写为private,大写为public。 由于a 和 b 在函数声明中指定为返回值, 因此当遇到 return 语句时, 它们将自动从函数返回。 可变参数 Go函数支持不定数量的参数的。

    81330发布于 2019-05-28
  • 来自专栏程序员

    go慢速入门——函数

    函数 go中的函数非常重要,因为go没有类那套东西,因此函数go中最重要的单元。 go函数声明形式如下所示: func 函数名(参数列表)(返回值列表){ 函数体 } go中使用关键字func定义函数函数名必须是合法的标识符。在go中,一个函数可以有多个返回值。 函数调用的退出阶段 在Go中,当一个函数调用返回后(比如执行了一个return语句或者函数中的最后一条语句执行完毕), 此调用可能并未立即退出。 一个函数调用从返回开始到最终退出的阶段称为此函数调用的退出阶段(exiting phase)。 函数调用的退出阶段的意义将在延迟函数中体现出来。 这是go语言的特色。 } 注意,在go中,不能再函数内定义函数,如果上面这些匿名函数不被直接调用,那么将会导致错误。上例中的最后一个匿名函数处于变量x和y的作用域内,所以在它的函数体内可以直接使用这两个变量。

    37920编辑于 2022-07-30
  • 来自专栏ReganYue's Blog

    Go】闭包函数

    改进前程序 package main import "fmt" func main() { var p2,progress int //获得武松和鲁达各自的“闭包内层函数” //闭包的作用是保存 “各自的内层函数状态” f1 := GetDoTaskFunc() f2 := GetDoTaskFunc() //交错的执行任务 progress = f1("武松",13) p2 = f2

    46220发布于 2021-09-16
  • 来自专栏大数据进阶

    【转】Go 语言函数

    函数是基本的代码块,用于执行一个任务。 Go 语言最少有个 main() 函数。 你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。 函数声明告诉了编译器函数的名称,返回类型,和参数。 函数定义 Go 语言函数定义格式如下: func function_name( [parameter list] ) [return_types] { 函数体 } 函数定义: func:函数是以func x的值为: 10 全局变量y的值为: 20 Go 语言函数作为值(匿名函数的使用) 1 package main 2 3 import ( 4 "fmt" 5 ) 6 7 func 10 = 100 闭包的实现 Go 语言支持匿名函数,可作为闭包。 Go 语言中同时有函数和方法。

    89730发布于 2019-09-17
  • 来自专栏光城(guangcity)

    Go函数用法实战

    Go函数用法实战 Go语言是一门非常容易上手的语言,在以后的文章中,尽量简单且实用! 本节主要阐述Go语言中函数的一些用法,如果不全,欢迎留言补充! 1.普通函数 1.1 返回单值或多值 函数类似这样: func xxx() int {} // 单值 func xxx() (int,int) {} // 多值 1.2 返回值带名 类似这样: func div_1(a, b int) (q, r int) { q, r = a/b, a%b return } 2.变参函数 2.1 传递同类型的变参函数 可以这样写: func sum_ser(numbers 0 for i := range numbers { s += numbers[i] } return s } // 调用 fmt.Println(sum_ser(1, 2, 3, 4, 5) ) 2.2 传递不同类型的变参函数 使用空接口存储不同类型。

    41420发布于 2020-05-29
  • 来自专栏利志分享

    go函数使用

    package main import( "fmt" ) /* 定义函数 */ type Circle struct { radius float64 } func main( ){ //Go 语言中同时有函数和方法。 一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。 ,在函数或者类的最后关闭进行执行。 类型对象中的方法,计算圆的面子 func (c Circle) getArea() float64 { // func + 主函数 + 函数名(参数) + 返回值类型定义 { 函数内容 } /

    38630编辑于 2022-04-25
  • 来自专栏golang云原生new

    GO 语言的函数??

    5 个,如果超过 5 个最好使用传入结构的方式来进行处理 程序的初始化顺序? : var 4 main : var 5 main : init main : main 具体的 demo 仓库可以查看如下地址: GO 语言程序初始化顺序 demo 函数GO 语言中的地位 在 GO 中,我们可以看到没有那些高级语言面向对象的语法,例如 Class 类,继承,对象等等内容, GO 语言中可以通过函数或者方法的方式进行各种组合完成我们想做的一切事项 此处就体现了函数GO 语言中是极其的重要,函数GO 语言中是 一等公民 的存在。 playfootball 函数 GO 语言中的 defer 使用过 GO 语言的 xdm 对于 defer 不会陌生,对于那些我们需要在函数退出前释放或者需要关闭的资源,我们就可以使用到 defer

    33210编辑于 2023-10-24
领券