golang下划线(underscore) 总结

本文详细介绍了Golang中特殊符号_的使用场景,包括在import语句中仅调用包初始化函数、忽略函数返回值中的特定部分以及在变量声明中进行类型断言等。通过具体示例帮助读者更好地理解和掌握这一特性。

一、概述

  "_" 可以简单理解为赋值但以后不再使用,在golang中使用的比较多,使用的场合也很多,稍作总结;

二、场景

  1、import

1 import  _ "net/http/pprof"

  引入包,会调用包中的初始化函数,这种使用方式仅让导入的包做初始化,而不适用包中其他功能;

  2、用在返回值

1 for _, v := range Slice {}
2 _, err := func()

  表示忽略某个值。单函数有多个返回值,用来获取某个特定的值

  3、用在变量

1 type Interface interface {
2 
3 }
4 
5 type T struct{
6 
7 }
8 
9 var _ Interface = &T{}

  上面用来判断 type T是否实现了I,用作类型断言,如果T没有实现借口I,则编译错误.

示例:

 1 package main
 2 
 3 import "fmt"
 4 
 5 type Interface interface {
 6     Stop()
 7 }
 8 
 9 type Bmw struct {
10     Name string
11 }
12 
13 func (this *Bmw) Stop() {
14     fmt.Printf("%s bmw stop.\n", this.Name)
15 }
16 
17 type Car struct {
18     Interface
19 }
20 
21 func main() {
22     c := Car{
23         &Bmw{
24             Name: "X5",
25         },
26     }
27     c.Stop()
28 }

 

转载于:https://www.cnblogs.com/chris-cp/p/7158638.html

### Golang下划线 `_` 的用法与含义 在 Go 编程语言中,下划线 `_` 是一种特殊的标识符,具有多种用途和意义。以下是其主要功能及其解释: #### 1. **作为占位符忽略变量** 当开发者不希望使用某个返回值时,可以使用下划线 `_` 来忽略它。这种做法有助于避免编译器报错,因为未使用的变量会被视为错误。 ```go func main() { a, _ := strconv.Atoi("42") // 忽略第二个返回值 error fmt.Println(a) } ``` 此代码片段展示了如何通过 `_` 忽略 `strconv.Atoi` 函数中的错误返回值[^5]。 --- #### 2. **导入包但仅用于副作用** 如果一个包被导入只是为了触发它的初始化函数(init),而不需要直接调用其中的任何方法或变量,则可以通过 `_` 导入该包。 ```go import _ "net/http/pprof" ``` 在此例子中,`pprof` 包被导入仅仅是为了注册性能分析工具的功能,而不是为了显式地访问其导出成员[^6]。 --- #### 3. **空白标识符在循环中** 在某些情况下,可能需要遍历集合却无需处理迭代项本身,在这样的场景里可以用 `_` 替代无用的变量名。 ```go for i := 0; i < 10; i++ { _, err := doSomething(i) // 只关心错误而不关注实际结果 if err != nil { log.Fatal(err) } } ``` 这里展示了一个典型的模式:只检查操作的结果状态而非具体数据输出[^7]。 --- #### 4. **结构体字段映射匿名字段** Go 支持定义嵌套类型的匿名字段,这允许子对象继承父类的行为或者属性。然而有时候我们并不想暴露这些内部细节给外部世界;此时就可以利用 `_` 实现隐藏效果。 ```go type User struct { Name string } type AdminUser struct { User // 嵌入式的用户类型 Level int } var admin = AdminUser{ User: User{Name: "Admin"}, Level: 9, } fmt.Printf("%v\n", admin.User.Name) // 如果不想让外界知道有这个关联关系的话, // 则可以在声明阶段加入 _ type HiddenUser struct { _ User // 这样就无法再通过实例直接获取到Name了 Alias string } ``` 上述示例说明了怎样借助于 `_` 将不必要的信息屏蔽起来[^8]。 --- #### 总结 综上所述,Golang 中的下划线 `_` 主要扮演着辅助角色——无论是帮助程序猿简化语法还是增强安全性都起到了不可替代的作用。理解并熟练掌握这一特性对于编写高效且易于维护的 GO 应用至关重要。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值