This commit is contained in:
github-actions[bot] 2022-09-06 12:13:56 +00:00
parent eda911069e
commit 1ecfb08d3d
4 changed files with 4 additions and 4 deletions

View File

@ -225,7 +225,7 @@ fmt.Println(*p.Point, *q.Point) // "{2 2} {2 2}"
</code></pre>
<p>然后这种类型的值便会拥有Point和RGBA类型的所有方法以及直接定义在ColoredPoint中的方法。当编译器解析一个选择器到方法时比如p.ScaleBy它会首先去找直接定义在这个类型里的ScaleBy方法然后找被ColoredPoint的内嵌字段们引入的方法然后去找Point和RGBA的内嵌字段引入的方法然后一直递归向下找。如果选择器有二义性的话编译器会报错比如你在同一级里有两个同名的方法。</p>
<p>方法只能在命名类型像Point或者指向类型的指针上定义但是多亏了内嵌有些时候我们给匿名struct类型来定义方法也有了手段。</p>
<p>下面是一个小trick。这个例子展示了简单的cache其使用两个包级别的变量来实现一个mutex互斥§9.2和它所操作的cache</p>
<p>下面是一个小trick。这个例子展示了简单的cache其使用两个包级别的变量来实现一个mutex互斥§9.2和它所操作的cache</p>
<pre><code class="language-go">var (
mu sync.Mutex // guards mapping
mapping = make(map[string]string)

View File

@ -4816,7 +4816,7 @@ fmt.Println(*p.Point, *q.Point) // &quot;{2 2} {2 2}&quot;
</code></pre>
<p>然后这种类型的值便会拥有Point和RGBA类型的所有方法以及直接定义在ColoredPoint中的方法。当编译器解析一个选择器到方法时比如p.ScaleBy它会首先去找直接定义在这个类型里的ScaleBy方法然后找被ColoredPoint的内嵌字段们引入的方法然后去找Point和RGBA的内嵌字段引入的方法然后一直递归向下找。如果选择器有二义性的话编译器会报错比如你在同一级里有两个同名的方法。</p>
<p>方法只能在命名类型像Point或者指向类型的指针上定义但是多亏了内嵌有些时候我们给匿名struct类型来定义方法也有了手段。</p>
<p>下面是一个小trick。这个例子展示了简单的cache其使用两个包级别的变量来实现一个mutex互斥§9.2和它所操作的cache</p>
<p>下面是一个小trick。这个例子展示了简单的cache其使用两个包级别的变量来实现一个mutex互斥§9.2和它所操作的cache</p>
<pre><code class="language-go">var (
mu sync.Mutex // guards mapping
mapping = make(map[string]string)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long