任何数据类型的有用性都取决于要解决的问题和用于解决该问题的方法。如果数据类型不适合该问题,那么它根本就不适合该问题-仅此而已。Go编程语言(以及大多数其他编程语言)基于程序员可以用来构建新数据类型的简单规则。其中一些规则是:*T:创建一个新数据类型,该数据类型是指向T的指针[10]T:Ts数组struct { t T; u U ... }:包含T作为组成部分的结构...程序员可以通过组合这些简单的规则来创建复杂的数据类型。可能的数据类型总数超过了有用的数据类型总数。显然,存在(并且必须存在)完全没有用的数据类型。这只是建立新数据类型的规则很简单这一事实的自然结果。类型**T属于不太可能出现在程序中的类型类别。可以写的*****T事实并不意味着这种类型必须非常有用。最后,您的问题的答案:该类型**T通常出现在我们想要将一个类型的值的用户重定向T到另一个类型的值的上下文中T,但是由于某些原因,我们无法访问该值的所有用户,或者发现这些用户会花费太多时间:我们不想复制类型的值T(由于某种原因)我们希望所有类型T为值的用户都可以通过指针访问该值我们想要快速将类型为特定值的所有用户重定向T到另一个值在这种情况下,使用**T是很自然的,因为它允许我们在O(1)中实现第三步:type User_of_T struct { Value **T}// Redirect all users of a particular value of type T// to another value of type T.func (u *User_of_T) Redirect(t *T) { *(u.Value) = t}