Golang快速入门-5(Day8)

export/unexport(private/public)

在golang中,如果要实现private/public的话,则需要使用到golang中的export/unexport,而这个要注意几个事情

  1. 决定有没有export/unexport是决定在你的档案有没有在同一个资料夹
  2. 如果希望export,则要将你希望export的type/interface/function/method/properity的第一个字变成大写,才能跨资料夹做使用
  3. 在同一个资料夹中的package名称皆要相同,但不一定要与资料夹名称相同(但通常会相同)
  4. 在同个资料夹中的所有宣告在最外层的变数,皆可跨档案存取(无论exported/unexported)
  5. 在import其他资料夹的时候,golang编译器会自动将上述import的路径下的package名称当作你下面预设呼叫的来源别称,如果需要另外命名可以在import前加上你希望的别名(但通常会将资料夹名称与package名称取相同,方便辨识)
    档案路径/test/util.go
package util

import (
    "fmt"
)

func Print() {
    fmt.Println("hello")
}

如果需import上述的档案,下面两种方式皆可

package main

import (
    "first-project/test"
)

func main() {
    util.Print()
}

或是

package main

import (
    test "first-project/test"
)

func main() {
    test.Print()
}

范例

以下内容会放在下述连结中,可搭配观看
https://github.com/kevinyay945/ithelp-2021/tree/master/go-package
我在其中建立了以下档案

主程序为main.go,而我在里面做了几件事

呼叫util里的
PrintHelloWorld()
并把里面宣告的
util.ExportedVar
util.Var1.ExportedProperty
util.Var1.unexportedProperty
util.unexportedVar
印出
但在最下面两句,会发生取不到unexported的值
可以试着将下面两句注解解开,看看有什麽错误发生


<<:  Golang快速入门-4(Day7)

>>:  介绍RESTful api(Day9)

【Day 07】- 恶搞行程(Process)、键盘(Keyboard)大作战之序章

Agenda 资安宣言 序 系列与规划 下期预告 资安宣言 撰写本系列文章目的在於提升资讯安全之实务...

[Day22] NLP会用到的模型(五)-self-attention

一. self-attention的编码方式 昨天说明了注意力主要是要明确算出input与outpu...

[Day25]程序菜鸟自学C++资料结构演算法 – 快速排序法(Quick Sort)

前言:讲解完了基础的排序法後,接着要来讲解比较高等的排序法,今天和明天要介绍的都是始於分割资料的排序...

Day8:如果怎样就怎样

在讲else、elif之前,先来让我们看看什麽是"if" 程序码如下: [In]...

28 - 有效的使用 Observability 的资料 (2) - 使用 Kibana Alerts 主动通知异常状况

有效的使用 Observability 的资料 系列文章 (1/4) - 透过 Machine Le...