mirror of
https://github.com/gohugoio/hugo.git
synced 2024-11-14 20:37:55 -05:00
b239595af5
501c6e233 Remoe speakerdeck example 9529bd27d Fix typos 530f22cd3 Remove language assuming knowledge of GitHub OAuth c618809e7 Refer to Go by its proper name, not its domain name 06e23168b Add timeout parameter to configuration docs 034fa62a7 Update shortcodes.md 10ea79335 Document .Ordinal on shortcode 0bfd85fb9 Formatting e44f80fdf Release 0.41 76164258c releaser: Add release notes to /docs for release of 0.41 8d87505eb releaser: Bump versions for release of 0.41 2bbc003ee docs: Document the GDPR Privacy Config e2d11564d Merge commit 'd2b1030060d3c91d5f9ffa3456418da16bd74f1d' git-subtree-dir: docs git-subtree-split: 501c6e23370fae21e2110e0d7ea0db6731b31779
60 lines
2 KiB
Markdown
60 lines
2 KiB
Markdown
---
|
|
title: len
|
|
linktitle: len
|
|
description: Returns the length of a variable according to its type.
|
|
godocref: https://golang.org/pkg/builtin/#len
|
|
date: 2017-02-01
|
|
publishdate: 2017-02-01
|
|
lastmod: 2017-04-18
|
|
categories: [functions]
|
|
keywords: []
|
|
signature: ["len INPUT"]
|
|
workson: [lists,taxonomies,terms]
|
|
hugoversion:
|
|
relatedfuncs: []
|
|
deprecated: false
|
|
toc: false
|
|
aliases: []
|
|
---
|
|
|
|
`len` is a built-in function in Go that returns the length of a variable according to its type. From the Go documentation:
|
|
|
|
> Array: the number of elements in v.
|
|
>
|
|
> Pointer to array: the number of elements in *v (even if v is nil).
|
|
>
|
|
> Slice, or map: the number of elements in v; if v is nil, len(v) is zero.
|
|
>
|
|
> String: the number of bytes in v.
|
|
>
|
|
> Channel: the number of elements queued (unread) in the channel buffer; if v is nil, len(v) is zero.
|
|
|
|
`len` is also considered a [fundamental function for Hugo templating][].
|
|
|
|
## `len` Example 1: Longer Headings
|
|
|
|
You may want to append a class to a heading according to the length of the string therein. The following templating checks to see if the title's length is greater than 80 characters and, if so, adds a `long-title` class to the `<h1>`:
|
|
|
|
{{< code file="check-title-length.html" >}}
|
|
<header>
|
|
<h1{{if gt (len .Title) 80}} class="long-title"{{end}}>{{.Title}}</h1>
|
|
</header>
|
|
{{< /code >}}
|
|
|
|
## `len` Example 2: Counting Pages with `where`
|
|
|
|
The following templating uses [`where`][] in conjunction with `len` to figure out the total number of content pages in a `posts` [section][]:
|
|
|
|
{{< code file="how-many-posts.html" >}}
|
|
{{ $posts := (where .Site.RegularPages "Section" "==" "post") }}
|
|
{{ $postCount := len $posts }}
|
|
{{< /code >}}
|
|
|
|
Note the use of `.RegularPages`, a [site variable][] that counts all regular content pages but not the `_index.md` pages used to add front matter and content to [list templates][].
|
|
|
|
|
|
[fundamental function for Hugo templating]: /templates/introduction/
|
|
[list templates]: /templates/lists/
|
|
[section]: /content-management/sections/
|
|
[site variable]: /variables/site/
|
|
[`where`]: /functions/where/
|