迹忆客 计算机编程题库

Go 经典面试题 部分二

以下哪个是 Go 中的派生类型?
  • Interface 类型
  • Map 类型
  • Channel 类型
正确答案是:A,B,C
正确率:36%

解析:

Interface 类型、Map 类型和Channel 类型是Go中的派生类型。

更多关于这些类型的介绍,可以参考下列文章

下面我们通过简单示例来看一下这三种类型的使用

Channel 类型

package main

import "fmt"

func main() {  
    var a chan int
    if a == nil {
        fmt.Println("channel a 是 nil, 现在去定义 a ")
        a = make(chan int)
        fmt.Printf("a 的类型是 %T\n", a)
    }
}

运行示例

Interface 类型

package main

import (  
    "fmt"
)

//接口定义
type VowelsFinder interface {  
    FindVowels() []rune
}

type MyString string

//MyString 实现VowelsFinder接口
func (ms MyString) FindVowels() []rune {  
    var vowels []rune
    for _, rune := range ms {
        if rune == 'a' || rune == 'e' || rune == 'i' || rune == 'o' || rune == 'u' {
            vowels = append(vowels, rune)
        }
    }
    return vowels
}

func main() {  
    name := MyString("Sam Anderson")
    var v VowelsFinder
    v = name
    fmt.Printf("元音字符是 %c", v.FindVowels())

}

运行示例

Map 类型

package main

import (  
    "fmt"
)

func main() {  
    employeeSalary := make(map[string]int)
    fmt.Println(employeeSalary)
}

运行示例

查看笔记

扫码一下
查看教程更方便