215 lines
9.7 KiB
Plaintext
Generated
215 lines
9.7 KiB
Plaintext
Generated
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<title>Go в примерах: Массивы (Arrays)</title>
|
||
<link rel=stylesheet href="site.css">
|
||
</head>
|
||
<script>
|
||
onkeydown = (e) => {
|
||
|
||
if (e.key == "ArrowLeft") {
|
||
window.location.href = 'switch';
|
||
}
|
||
|
||
|
||
if (e.key == "ArrowRight") {
|
||
window.location.href = 'slices';
|
||
}
|
||
|
||
}
|
||
</script>
|
||
<body>
|
||
<div class="example" id="arrays">
|
||
<h2><a href="./">Go в примерах</a>: Массивы (Arrays)</h2>
|
||
|
||
<table>
|
||
|
||
<tr>
|
||
<td class="docs">
|
||
<p>В Go, <em>массив</em> это числовой ряд элементов определенной
|
||
длины.</p>
|
||
|
||
</td>
|
||
<td class="code empty leading">
|
||
|
||
|
||
</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="docs">
|
||
|
||
</td>
|
||
<td class="code leading">
|
||
<a href="http://play.golang.org/p/CiZ6oDF6A_l" target="_blank"><img title="Run code" src="play.png" class="run" /></a><img title="Copy code" src="clipboard.png" class="copy" />
|
||
<div class="highlight"><pre><span class="kn">package</span> <span class="nx">main</span>
|
||
</pre></div>
|
||
|
||
</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="docs">
|
||
|
||
</td>
|
||
<td class="code leading">
|
||
|
||
<div class="highlight"><pre><span class="kn">import</span> <span class="s">"fmt"</span>
|
||
</pre></div>
|
||
|
||
</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="docs">
|
||
|
||
</td>
|
||
<td class="code leading">
|
||
|
||
<div class="highlight"><pre><span class="kd">func</span> <span class="nx">main</span><span class="p">()</span> <span class="p">{</span>
|
||
</pre></div>
|
||
|
||
</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="docs">
|
||
<p>В данном примере мы создаем массив <code>a</code>, который
|
||
содержит 5 элементов с типом <code>int</code>. Тип элементов
|
||
и длина являются частью типа массива. По-умолчанию
|
||
массив заполняется нулевыми значениями, например,
|
||
в случае <code>int</code> нулевое значение - 0.</p>
|
||
|
||
</td>
|
||
<td class="code leading">
|
||
|
||
<div class="highlight"><pre> <span class="kd">var</span> <span class="nx">a</span> <span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="kt">int</span>
|
||
<span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="s">"emp:"</span><span class="p">,</span> <span class="nx">a</span><span class="p">)</span>
|
||
</pre></div>
|
||
|
||
</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="docs">
|
||
<p>Мы можем установить значение по индексу элемента
|
||
следующим образом:<code>array[index] = value</code>.
|
||
Получить значение можно аналогично - <code>array[index]</code>.</p>
|
||
|
||
</td>
|
||
<td class="code leading">
|
||
|
||
<div class="highlight"><pre> <span class="nx">a</span><span class="p">[</span><span class="mi">4</span><span class="p">]</span> <span class="p">=</span> <span class="mi">100</span>
|
||
<span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="s">"set:"</span><span class="p">,</span> <span class="nx">a</span><span class="p">)</span>
|
||
<span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="s">"get:"</span><span class="p">,</span> <span class="nx">a</span><span class="p">[</span><span class="mi">4</span><span class="p">])</span>
|
||
</pre></div>
|
||
|
||
</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="docs">
|
||
<p>Встроенная функция <code>len</code> возвращает длину массива.</p>
|
||
|
||
</td>
|
||
<td class="code leading">
|
||
|
||
<div class="highlight"><pre> <span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="s">"len:"</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="nx">a</span><span class="p">))</span>
|
||
</pre></div>
|
||
|
||
</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="docs">
|
||
<p>Так можно инициалзировать и заполнить массив
|
||
значениеми в одну строку</p>
|
||
|
||
</td>
|
||
<td class="code leading">
|
||
|
||
<div class="highlight"><pre> <span class="nx">b</span> <span class="o">:=</span> <span class="p">[</span><span class="mi">5</span><span class="p">]</span><span class="kt">int</span><span class="p">{</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">5</span><span class="p">}</span>
|
||
<span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="s">"dcl:"</span><span class="p">,</span> <span class="nx">b</span><span class="p">)</span>
|
||
</pre></div>
|
||
|
||
</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="docs">
|
||
<p>Тип <code>массив</code> является одномерным. Но вы можете
|
||
совмещать типы, для создания многомерных
|
||
структур.</p>
|
||
|
||
</td>
|
||
<td class="code">
|
||
|
||
<div class="highlight"><pre> <span class="kd">var</span> <span class="nx">twoD</span> <span class="p">[</span><span class="mi">2</span><span class="p">][</span><span class="mi">3</span><span class="p">]</span><span class="kt">int</span>
|
||
<span class="k">for</span> <span class="nx">i</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">i</span> <span class="p"><</span> <span class="mi">2</span><span class="p">;</span> <span class="nx">i</span><span class="o">++</span> <span class="p">{</span>
|
||
<span class="k">for</span> <span class="nx">j</span> <span class="o">:=</span> <span class="mi">0</span><span class="p">;</span> <span class="nx">j</span> <span class="p"><</span> <span class="mi">3</span><span class="p">;</span> <span class="nx">j</span><span class="o">++</span> <span class="p">{</span>
|
||
<span class="nx">twoD</span><span class="p">[</span><span class="nx">i</span><span class="p">][</span><span class="nx">j</span><span class="p">]</span> <span class="p">=</span> <span class="nx">i</span> <span class="o">+</span> <span class="nx">j</span>
|
||
<span class="p">}</span>
|
||
<span class="p">}</span>
|
||
<span class="nx">fmt</span><span class="p">.</span><span class="nx">Println</span><span class="p">(</span><span class="s">"2d: "</span><span class="p">,</span> <span class="nx">twoD</span><span class="p">)</span>
|
||
<span class="p">}</span>
|
||
</pre></div>
|
||
|
||
</td>
|
||
</tr>
|
||
|
||
</table>
|
||
|
||
<table>
|
||
|
||
<tr>
|
||
<td class="docs">
|
||
<p>Обратите внимание, что массивы отображаются в виде
|
||
[v1 v2 v3 …] при выводе с помощью fmt.Println.</p>
|
||
|
||
</td>
|
||
<td class="code leading">
|
||
|
||
<div class="highlight"><pre><span class="gp">$</span> go run arrays.go
|
||
<span class="go">emp: [0 0 0 0 0]</span>
|
||
<span class="go">set: [0 0 0 0 100]</span>
|
||
<span class="go">get: 100</span>
|
||
<span class="go">len: 5</span>
|
||
<span class="go">dcl: [1 2 3 4 5]</span>
|
||
<span class="go">2d: [[0 1 2] [1 2 3]]</span>
|
||
</pre></div>
|
||
|
||
</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="docs">
|
||
<p>В Go вы будете встречать <em>срезы</em> гораздо чаще, чем
|
||
массивы. Срезы рассмотрим далее</p>
|
||
|
||
</td>
|
||
<td class="code empty">
|
||
|
||
|
||
</td>
|
||
</tr>
|
||
|
||
</table>
|
||
|
||
|
||
<p class="next">
|
||
Следующий пример: <a href="slices">Срезы (Slices)</a>.
|
||
</p>
|
||
|
||
<p class="footer">
|
||
by <a href="https://markmcgranaghan.com">Mark McGranaghan</a> | <a href="https://github.com/mmcgrana/gobyexample/blob/master/examples/arrays">source</a> | <a href="https://github.com/mmcgrana/gobyexample#license">license</a>
|
||
</p>
|
||
</div>
|
||
<script>
|
||
var codeLines = [];
|
||
codeLines.push('');codeLines.push('package main\u000A');codeLines.push('import \"fmt\"\u000A');codeLines.push('func main() {\u000A');codeLines.push(' var a [5]int\u000A fmt.Println(\"emp:\", a)\u000A');codeLines.push(' a[4] = 100\u000A fmt.Println(\"set:\", a)\u000A fmt.Println(\"get:\", a[4])\u000A');codeLines.push(' fmt.Println(\"len:\", len(a))\u000A');codeLines.push(' b := [5]int{1, 2, 3, 4, 5}\u000A fmt.Println(\"dcl:\", b)\u000A');codeLines.push(' var twoD [2][3]int\u000A for i := 0; i \x3C 2; i++ {\u000A for j := 0; j \x3C 3; j++ {\u000A twoD[i][j] = i + j\u000A }\u000A }\u000A fmt.Println(\"2d: \", twoD)\u000A}\u000A');codeLines.push('');codeLines.push('');
|
||
</script>
|
||
<script src="site.js" async></script>
|
||
</body>
|
||
</html>
|