1. package private
    2. type matrix struct {
    3. name string
    4. }
    5. // NewMatrix 强制使用工厂方法
    6. func NewMatrix(params string) *matrix {
    7. m := new(matrix)
    8. m.name = params
    9. return m
    10. }

    调用包:

    1. package main
    2. import (
    3. "fmt"
    4. "github.com/private"
    5. )
    6. func main() {
    7. //wrong := new(private.matrix) //cannot refer to unexported name private.matrix
    8. //fmt.Println(wrong)
    9. ma := private.NewMatrix("jack")
    10. fmt.Println(ma)
    11. }

    这样就能禁止使用new函数,将结构体变为私有的了。