返回顶部
首页 > 资讯 > 精选 >Go中函数的使用方法与注意事项是什么
  • 775
分享到

Go中函数的使用方法与注意事项是什么

2023-07-04 15:07:03 775人浏览 独家记忆
摘要

今天小编给大家分享一下Go中函数的使用方法与注意事项是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。细节汇总函数的形参列

今天小编给大家分享一下Go中函数的使用方法与注意事项是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

细节汇总

  • 函数的形参列表可以是多个,返回值列表也可以是多个

  • 形参列表和返回值列表的数据类型,可以是值类型、也可以是引用类型

  • 函数的命名遵循标识符命名规范,首字母不能是数字,首字母大写表示该函数可以被本包文件和其它文件使用,类似public;首字母小写只能被本包文件使用,类似private。

  • 函数中的变量是局部的,外部不能访问。作用域

  • 基本数据类型和数组都是值传递的,即进行值拷贝。在函数内修改,不会影响到原来的值,

  • 如果希望函数内的变量能够修改函数外的变量,可以传入变量的地址(&),函数内以指针的方式操作变量,从效果上看类似引用

  • Go函数不支持函数重载。

  • 在Go中,函数也是一种数据类型,可以赋值给一个变量,则该变量是一个函数类型的变量,通过该变量可以对函数调用。

  • 函数既然是一种数据类型,因此在Go中,函数也可以作为形参,并且调用。(回调函数

  • 为了简化数据类型定义,Go支持自定义数据类型

  • 语法: type 自定数据类型名 数据类型 (相当于一个别名)

  • 案例: type myInt int 这时,myInt就等价于int来使用了

  • type mySum func(int, int) int 这时,mySum就等价于func(int, int) int

  • 支持对函数返回值命名(可以不受返回值顺序限制

  • 使用 _ 下划线标识符,忽略返回值。(占位符

  • Go支持可变参数

值传递和指针传递

func test(n1 int) {n1 = n1 + 10fmt.Println("test n1=", n1)}// 指针类型接收处理func test02(n2 *int) {*n2 = *n2 + 10fmt.Println("test02 n2=", *n2)}func main() {n1 := 20n2 := 2test(n1) // 值类型test02(&n2) // 指针类型fmt.Println("main n1=", n1)fmt.Println("main n2=", n2)}

什么是重载

重载: 函数名相同,但是形参不同或者数据类型不同的情况。

golang语言中是不支持传统的函数重载的,fn redeclared in this block

Golang语言是支持可变参数的,空接口的形式

Go中函数的使用方法与注意事项是什么

函数类型的变量

类型: func(int, int) int

func getSum(n1 int, n2 int) int {return n1 + n2}func getSums(n1 int, n2 int, n3 int) int {return n1 + n2 + n3}// main 函数sumFn := getSumres := sumFn(10, 20)fmt.Printf("%T %v\n", res, res) // int 30fmt.Printf("%T \n", sumFn) // func(int, int) intsumsFn := getSumsresult := sumsFn(10, 20, 30)fmt.Printf("result : %T %v\n", result, result) // result : int 60fmt.Printf("sumsFn类型:%T \n", sumFn) // sumsFn类型:func(int, int) int

函数作为形参传入

func getSum(n1 int, n2 int) int {return n1 + n2}func testFn(fnVar func(int, int) int, num1 int, num2 int) int {return fnVar(num1, num2) // 调用传入的函数,并返回值}// 函数类型形参sumFn := getSumtotal := testFn(sumFn, 1, 2)fmt.Println("total=", total) // 3

自定义数据类型

  • 自定义函数数据类型, 相当于起了一个别名

type mySum func(int, int) intfunc testFn(fnVar mySum, num1 int, num2 int) int {return fnVar(num1, num2)}// func testFn(fnVar func(int, int) int, num1 int, num2 int) int {// return fnVar(num1, num2)// }
  • 自定义数据类型

// main函数下type myInt intvar num1 myInt = 2// var num2 int = num1 // 这样是报错的, myInt和int并不等价var num2 int = int(num1) // 显式类型转换fmt.Printf("num1的类型:%T 值:%v \n", num1, num1) // num1的类型:main.myInt 值:2fmt.Printf("num2的类型:%T 值:%v \n", num2, num2) // num2的类型:int 值:2
  • 定义的类型: 包名.类型名,如:utils.myInt

// 以下是utils包package utilsimport "fmt"func TestFn() string {fmt.Println("TestFn 函数被调用")type myInt intvar n myInt = 10fmt.Printf("n的类型:%T 值:%v", n, n) // n的类型:utils.myInt 值:10return "hahaha"}

返回值命名

func sumSub(n1 int, n2 int) (sum int, sub int) {    // 这里不需要声明sum, sub变量了,也不用在return时写sum = n1 + n2sub = n1 - n2return}// main函数sum, sub := sumSub(9, 8)fmt.Println("sum=", sum, "sub=", sub) // sum= 17 sub= 1

可变参数

基本语法

  • 支持零到多个参数

func sum(args... int) {}

  • 支持1到多个参数

func sum(n1 int, args... int) {}

args:就是一个承接的变量名,可以自定义,如:func sum(n1 int, **vars**... int) {}

说明:

  • args是slice切片,通过args[index]可以访问到各个值

  • args必须放到形参列表的最后面

参数个数可变

func sumV2(n1 int, args ...int) int {sum := n1fmt.Printf("args类型是:%T\n", args) // args类型是:[]int// 遍历args切片for i := 0; i < len(args); i++ {sum += args[i]}return sum}// main函数// 参数可变total02 := sumV2(1, 2, 3, 4)fmt.Println("total02=", total02) // total02= 10

总结练习

交换变量a, b的值

package mainimport "fmt"func swap(n1 *int, n2 *int) {*n1 = *n1 + *n2*n2 = *n1 - *n2 // *n1*n1 = *n1 - *n2 // *n2}func main() {a := 12b := 20swap(&a, &b)fmt.Println("a = ", a, "b = ", b)}

以上就是“Go中函数的使用方法与注意事项是什么”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: Go中函数的使用方法与注意事项是什么

本文链接: https://lsjlt.com/news/346398.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Go中函数的使用方法与注意事项是什么
    今天小编给大家分享一下Go中函数的使用方法与注意事项是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。细节汇总函数的形参列...
    99+
    2023-07-04
  • golang函数注释的使用方法和注意事项是什么
    这篇文章主要介绍了golang函数注释的使用方法和注意事项是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇golang函数注释的使用方法和注意事项是什么文章都会有所收获,下面我们一起来看看吧。一、函数注释概...
    99+
    2023-07-05
  • Go中interface{}的注意事项是什么
    这篇文章主要介绍“Go中interface{}的注意事项是什么”,在日常操作中,相信很多人在Go中interface{}的注意事项是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go中interface{...
    99+
    2023-07-05
  • Assert.assertEquals的使用方法及注意事项是什么
    这篇文章主要介绍了Assert.assertEquals的使用方法及注意事项是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Assert.assertEquals的使用方法及注意事项是什么文章都会有所收获,...
    99+
    2023-06-30
  • React中style的使用方法及注意事项是什么
    这篇“React中style的使用方法及注意事项是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“React中style的...
    99+
    2023-07-05
  • C++ 函数的引用参数的使用注意事项是什么?
    引用参数在 c++++ 中允许函数直接修改调用函数的参数,通过传递对原始值而不是副本的引用。注意事项包括:引用参数必须引用有效对象,不能引用临时对象,对引用参数的修改会影响原始变量,并且...
    99+
    2024-04-19
    c++ 函数引用
  • localStorage的用法及使用注意事项是什么
    这篇文章主要讲解了“localStorage的用法及使用注意事项是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“localStorage的用法及使用注意事项是什么”吧!localStor...
    99+
    2023-06-29
  • 使用.removeProp的注意事项是什么
    本篇内容主要讲解“使用.removeProp的注意事项是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“使用.removeProp的注意事项是什么”吧!  ...
    99+
    2024-04-02
  • 使用.prop的注意事项是什么
    这篇文章主要介绍“使用.prop的注意事项是什么”,在日常操作中,相信很多人在使用.prop的注意事项是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”使用.prop的注意...
    99+
    2024-04-02
  • Go语言函数闭包的用法和注意事项
    闭包使函数可以访问其创建范围之外的变量。在 go 中,内层函数可以访问外层函数作用域中的所有变量,包括:状态管理: 闭包可用来管理长期状态,即使函数已返回。事件处理: 闭包可创建事件处理...
    99+
    2024-04-13
    go语言 闭包 作用域
  • ajaxSuccess使用注意事项是什么
    本文小编为大家详细介绍“ajaxSuccess使用注意事项是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“ajaxSuccess使用注意事项是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,...
    99+
    2024-04-02
  • Python中闭包和自由变量的使用方法与注意事项是什么
    这篇文章主要为大家展示了“Python中闭包和自由变量的使用方法与注意事项是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python中闭包和自由变量的使用方法与注意事项是什么”这篇文章吧。...
    99+
    2023-06-29
  • Mybatis-Plus分页的使用与注意事项是什么
    这篇文章主要介绍“Mybatis-Plus分页的使用与注意事项是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mybatis-Plus分页的使用与注意事项是什么”文章能帮助大家解决问题。1.写个...
    99+
    2023-06-30
  • PHP类方法前加@符号的作用与注意事项是什么
    这篇文章主要介绍“PHP类方法前加@符号的作用与注意事项是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PHP类方法前加@符号的作用与注意事项是什么”文章能帮助大家解决问题。在PHP中,我们可以...
    99+
    2023-07-05
  • php urlencode转中文的方法和注意事项是什么
    本篇内容主要讲解“php urlencode转中文的方法和注意事项是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php urlencode转中文的方法和注意事项是什么”吧!一、urlenc...
    99+
    2023-07-05
  • return语句使用的注意事项是什么
    本篇内容主要讲解“return语句使用的注意事项是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“return语句使用的注意事项是什么”吧!   ...
    99+
    2024-04-02
  • 使用Oracle Nologging+Append注意事项是什么
    本篇内容介绍了“使用Oracle Nologging+Append注意事项是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细...
    99+
    2024-04-02
  • Java中Collections.emptyList()的注意事项是什么
    小编给大家分享一下Java中Collections.emptyList()的注意事项是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!偶然发现有小伙伴错误地使用...
    99+
    2023-06-14
  • Golang中interface{}的注意事项是什么
    这篇“Golang中interface{}的注意事项是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Golang中int...
    99+
    2023-07-05
  • Golang函数的可变函数参数使用注意事项
    Golang是一种强类型、静态编程语言,其函数设计灵活,其中可变函数参数也是常见的实现方式之一,通常会用于函数参数个数不确定或者需要动态参数传递的场景。可变函数参数的使用虽然方便有效,但是也存在一些需要注意的问题,本文将详细介绍一下可变函数...
    99+
    2023-05-17
    Golang 注意事项 可变函数参数
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作